Ver enlaces en Android Jetpack

View Binding es una de las mejores características que proporciona vistas para vincular con la actividad que está en curso. Reemplazar el método findViewById() y, por lo tanto, reducir el código repetitivo generó las instancias de las vistas del diseño actual. Y la característica más importante de View Binding es que siempre es nulo seguro. En este artículo detallado, se proporciona un enfoque detallado para el enlace de vista.

Ver características vinculantes en Android

  • ViewBinding siempre es seguro para nulos y tipos, lo que es compatible con Java y Kotlin.
  • ViewBinding se presenta en la versión 3.6 y superior de Gradle (que viene con Android Studio 4.0, solo Gradle 3.6).
  • ViewBinding también ayuda a reducir el código repetitivo, lo que reduce la redundancia del código.
  • Al usar ViewBinding, se deben seguir las convenciones de nomenclatura adecuadas porque crea la clase de enlace internamente usando el nombre del mismo archivo de diseño. Se prefiere nombrar el archivo de diseño en el caso de la serpiente. Por ejemplo, ViewBinding crea un archivo activity_main.xml (snake case) como ActivityMainBinding (pascal case), que contiene todas las propiedades e instancias de todas las vistas que contiene ese diseño.
  • Y también cualquier ID de todos los elementos que se creen dentro del archivo XML de diseño, ViewBinding los convierte en camel case. Por ejemplo: android:id=”button_submit” -> buttonSubmit. Lo cual es muy útil en la legibilidad del código.
  • Usando ViewBinding, la compilación del código es un poco más rápida en comparación con el método tradicional findViewById() .
  • La clase ActivityMainBinding se genera en la siguiente ruta en la jerarquía del proyecto que se puede ver.

  • El siguiente es el flujo de cómo se generan los objetos de las propiedades del diseño.

View Binding in Android Jetpack

  • Sin embargo, si el diseño debe ignorarse con el enlace de las vistas, puede hacerlo agregando el siguiente atributo al diseño raíz.

herramientas: viewBindingIgnore = «verdadero»

Implementación paso a paso

Paso 1: crear un proyecto de actividad vacío

Paso 2: habilitar la función ViewBinding

  • Es necesario habilitar la función ViewBinding en Android Studio 4.0 y superior, dentro del archivo gradle de compilación a nivel de la aplicación.
  • Invoca el siguiente fragmento de código dentro del cuerpo de android{} del archivo gradle.

construir características {

       viewBinding = verdadero

}

  • Consulte la siguiente imagen si no puede ubicar el archivo Gradle a nivel de la aplicación e invoque la función en la jerarquía de la vista del proyecto.

Paso 3: trabajar con el archivo activity_main.xml

  • El diseño principal del archivo contiene un EditText y un Button. Para implementar la misma interfaz de usuario, invoca el siguiente código dentro del archivo actitvity_main.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    tools:ignore="HardcodedText">
 
    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="128dp"
        android:layout_marginEnd="16dp"
        android:hint="Enter Something"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
 
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="Button"
        app:layout_constraintEnd_toEndOf="@+id/editText"
        app:layout_constraintTop_toBottomOf="@+id/editText" />
 
</androidx.constraintlayout.widget.ConstraintLayout>

Interfaz de usuario de salida:

Paso 4: trabajar con el archivo MainActivity 

  • Las cosas en las que hay que centrarse aquí son la creación de la instancia de ViewBinding. A continuación se muestra el fragmento de código que se utiliza para crear una instancia.

enlace var: ActivityMainBinding = ActivityMainBinding.inflate(layoutInflater)

que puede tener un alcance global o local según el uso.

  • El acceso a las propiedades del diseño es el siguiente.

vinculante.camelCaseConvertedObject

  • Invoque el siguiente código dentro del archivo MainActivity.kt/MainActivity.java , se agregan comentarios para una mejor comprensión.

Kotlin

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import com.adityamshidlyali.gfgarticle.databinding.ActivityMainBinding
 
class MainActivity : AppCompatActivity() {
 
    // create instance of the ActivityMainBinding,
    // as we have only one layout activity_main.xml
    private lateinit var binding: ActivityMainBinding
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
 
        // create instance of the ActivityMainBinding, 
        // as we have only one layout activity_main.xml
        var binding: ActivityMainBinding = ActivityMainBinding.inflate(layoutInflater)
 
        // binding.root returns the root layout,
        // which is activity_main.xml file itself
        setContentView(binding.root)
 
        // using the binding variable we can access the layout
        // properties and perform the operations on them as usual
        binding.buttonSubmit.setOnClickListener {
            val str: String = binding.editText.text.toString()
            if (str.isNotEmpty()) {
                Toast.makeText(this, "You entered " + binding.editText.text.toString(), Toast.LENGTH_SHORT).show()
            } else {
                Toast.makeText(this, "Please enter something", Toast.LENGTH_SHORT).show()
            }
        }
    }
}

Java

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import com.adityamshidlyali.gfgarticle.databinding.ActivityMainBinding
 
public class MainActivity extends AppCompatActivity {
    // calling binding class for activity_main.xml
    // which is generated automatically.
     ActivityMainBinding activityMainBinding;
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         
        // inflating our xml layout in our activity main binding
        activityMainBinding = ActivityMainBinding.inflate(getLayoutInflater());
         
        // getting our root layout in our view.
        View view = activityMainBinding.getRoot();
        
           // below line is to set
        // Content view for our layout.
        setContentView(view);
 
        // calling button and setting on click listener for our button.
        // we have called our button with its id and set on click listener on it.
        activityMainBinding.buttonSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               String str = activityMainBinding.editText.getText().toString();
               if(str.isEmpty()) {
               Toast.makeText(this, "Please enter something", Toast.LENGTH_SHORT).show();
               } else {
               Toast.makeText(this, "You entered " + activityMainBinding.editText.geText().toString(), Toast.LENGTH_SHORT).show();
               }
             }
        });
    }
}

Producción:

Publicación traducida automáticamente

Artículo escrito por adityamshidlyali y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *