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.
- 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
- Aquí se utiliza Android Studio, consulte Android | Cómo crear/iniciar un nuevo proyecto en Android Studio , para saber cómo crear un proyecto de Android Studio de actividad vacía.
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