Biblioteca de vinculación de datos Parte de Android Jetpack
La biblioteca de vinculación de datos es una biblioteca de compatibilidad que permite vincular los componentes de la IU de tus diseños a las fuentes de datos de tu app usando un formato declarativo en lugar de la programación.
Los diseños a menudo se definen en actividades con código que llama a los métodos de framework de la IU. Por ejemplo, el siguiente código llama a findViewById()
para encontrar un widget TextView
y vincularlo a la propiedad userName
de la variable viewModel
:
Kotlin
findViewById<TextView>(R.id.sample_text).apply { text = viewModel.userName }
Java
TextView textView = findViewById(R.id.sample_text); textView.setText(viewModel.getUserName());
El siguiente ejemplo muestra cómo usar la biblioteca de vinculación de datos para asignar texto al widget directamente en el archivo de diseño. De esta manera, no es necesario llamar a ninguno de los códigos Java que se muestran arriba. Observa el uso de la sintaxis @{}
en la expresión de asignación:
<TextView
android:text="@{viewmodel.userName}" />
La vinculación de componentes en el archivo de diseño permite quitar varias llamadas al framework de la IU en las actividades, que resultan más sencillas y fáciles de mantener. Esto también puede mejorar el rendimiento de la app y ayudar a evitar pérdidas de memoria y excepciones de puntero nulo.
Uso de la biblioteca de vinculación de datos
Usa las siguientes páginas para aprender a usar la biblioteca de vinculación de datos en tus apps de Android.
- Cómo comenzar
- Obtén información sobre cómo preparar tu entorno de desarrollo para trabajar con la biblioteca de vinculación de datos, incluida la compatibilidad con el código de vinculación de datos en Android Studio.
Diseños y expresiones vinculantes
El lenguaje de expresiones permite escribir expresiones que conectan variables a las vistas del diseño. La biblioteca de vinculación de datos genera automáticamente las clases requeridas para vincular las vistas del diseño con los objetos de datos. La biblioteca proporciona funciones tales como importaciones, variables y elementos que puedes usar en tus diseños.
Estas funciones de la biblioteca coexisten perfectamente con tus diseños existentes.
Por ejemplo, las variables de vinculación que pueden usarse en expresiones se definen dentro de un elemento data
que esté relacionado con el elemento raíz del diseño de la IU.
Ambos elementos están unidos con una etiqueta layout
, como se muestra en el siguiente ejemplo:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewmodel"
type="com.myapp.data.ViewModel" />
</data>
<ConstraintLayout... /> <!-- UI layout's root element -->
</layout>
- Cómo trabajar con objetos de datos observables
- La biblioteca de vinculación de datos proporciona clases y métodos para observar fácilmente los datos en busca de cambios. No necesitas preocuparte por actualizar la IU cuando cambie la fuente de datos subyacente. Puedes hacer que tus variables o sus propiedades sean observables. La biblioteca te permite hacer que objetos, campos o colecciones sean observables.
- Clases de vinculación generadas
- La biblioteca de vinculación de datos genera clases de vinculación que se usan para acceder a las variables y vistas del diseño. Esta página muestra cómo usar y personalizar las clases de vinculación generadas.
- Adaptadores de vinculación
- Para cada expresión de diseño, hay un adaptador de vinculación que hace las llamadas de framework requeridas para establecer las propiedades o los objetos de escucha correspondientes. Por ejemplo, el adaptador de vinculación puede llamar al método
setText()
para establecer la propiedad de texto, o bien al métodosetOnClickListener()
para agregar un objeto de escucha en el evento de clic. Los adaptadores de vinculación más comunes, como los de la propiedadandroid:text
que se usan en los ejemplos de esta página, están disponibles para su uso en el paqueteandroid.databinding.adapters
. Para ver la lista de los adaptadores de vinculación comunes, consulta adaptadores. También puedes crear adaptadores personalizados, como se muestra en el siguiente ejemplo:
Kotlin
@BindingAdapter("app:goneUnless") fun goneUnless(view: View, visible: Boolean) { view.visibility = if (visible) View.VISIBLE else View.GONE }
Java
@BindingAdapter("app:goneUnless") public static void goneUnless(View view, Boolean visible) { view.visibility = visible ? View.VISIBLE : View.GONE; }
- Cómo vincular vistas de diseño con componentes de arquitectura
- La biblioteca de asistencia de Android incluye los componentes de arquitectura, que puedes usar para diseñar apps que sean sólidas, aptas para pruebas y mantenibles. También puedes usar estos componentes con la biblioteca de vinculación de datos para simplificar aún más el desarrollo de la IU.
- Vinculación de datos en dos direcciones
- La biblioteca de vinculación de datos admite la vinculación de datos bidireccional. La notación utilizada para este tipo de vinculación admite la capacidad de recibir cambios de datos en una propiedad y, al mismo tiempo, escuchar las actualizaciones de los usuarios a esa propiedad.
Recursos adicionales
Para obtener más información sobre la vinculación de datos, consulta los siguientes recursos adicionales.