Biblioteca de vinculación de datos   Parte de Android Jetpack.

La biblioteca de vinculación de datos es una biblioteca de compatibilidad que te permite vincular componentes de la IU de tus diseños con fuentes de datos de tu app con un formato declarativo, en lugar de hacerlo de manera programática.

Los diseños suelen definirse en actividades con código que llama a métodos del 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());

En el siguiente ejemplo, se muestra cómo usar la biblioteca de vinculación de datos para asignar texto al widget directamente en el archivo de diseño. Esto elimina la necesidad de llamar a cualquiera de los códigos Java que se muestran más 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 te permite quitar varias llamadas al framework de la IU en tus actividades, lo que las hace más sencillas y fáciles de mantener. Esto también puede mejorar el rendimiento de la aplicación y ayudar a evitar fugas 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 para Android.

Cómo comenzar
Aprende a 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 te permite escribir expresiones que conectan variables con las vistas del diseño. La biblioteca de vinculación de datos genera automáticamente las clases necesarias para vincular las vistas del diseño con tus objetos de datos. La biblioteca proporciona funciones como importaciones, variables y elementos de inclusión 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 se pueden usar en expresiones se definen dentro de un elemento data que es un elemento hermano del elemento raíz del diseño de la IU. Ambos elementos se unen en 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 los cambios en los datos. No tienes que preocuparte por actualizar la IU cuando cambia la fuente de datos subyacente. Puedes hacer que tus variables o sus propiedades sean observables. La biblioteca te permite hacer que los objetos, los campos o las 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. En esta página, se 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 realiza las llamadas al framework necesarias para establecer las propiedades o los objetos de escucha correspondientes. Por ejemplo, el adaptador de vinculación puede encargarse de llamar al método setText() para establecer la propiedad de texto o llamar al método setOnClickListener() para agregar un objeto de escucha al evento de clic. Los adaptadores de vinculación más comunes, como los adaptadores para la propiedad android:text que se usan en los ejemplos de esta página, están disponibles para que los uses en el paquete android.databinding.adapters. Para obtener una 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 compatibilidad de Android incluye los componentes de la arquitectura, que puedes usar para diseñar apps sólidas, aptas para pruebas y mantenibles. Puedes usar los componentes de la arquitectura con la biblioteca de vinculación de datos para simplificar aún más el desarrollo de tu 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 que se usa para este tipo de vinculación admite la capacidad de recibir cambios de datos en una propiedad y escuchar las actualizaciones del usuario en esa propiedad al mismo tiempo.

Recursos adicionales

Para obtener más información sobre la vinculación de datos, consulta los siguientes recursos adicionales.

Ejemplos

Codelabs

Entradas de blog