El lenguaje de expresiones te permite escribir expresiones que controlen eventos enviados por vistas. La biblioteca de vinculación de datos genera automáticamente las clases requeridas para vincular las vistas en el diseño con tus objetos de datos.
Los archivos de diseño de vinculación de datos son ligeramente diferentes y comienzan con una etiqueta raíz de
layout, seguido de un elemento data y un elemento raíz view. Esta vista
es cuál es tu raíz en un archivo de diseño no vinculante. El siguiente código
muestra un archivo de diseño de muestra:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="user" type="com.example.User"/>
</data>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.firstName}"/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.lastName}"/>
</LinearLayout>
</layout>
La variable user dentro de data describe una propiedad que se puede usar en
este diseño:
<variable name="user" type="com.example.User" />
Las expresiones del diseño se escriben en las propiedades del atributo con el elemento
@{}. En el siguiente ejemplo, el
El texto TextView se establece en
Propiedad firstName de la variable user:
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.firstName}" />
Objetos de datos
Supongamos que tienes un objeto sin formato para describir la entidad User:
Kotlin
data class User(val firstName: String, val lastName: String)
Java
public class User { public final String firstName; public final String lastName; public User(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } }
Este tipo de objeto tiene datos que nunca cambian. Es común en las apps tener datos que se leen una vez y nunca cambian. También puedes usar un objeto que sigue un conjunto de convenciones, como el uso de métodos de acceso en el lenguaje de programación Java, como se muestra en el siguiente ejemplo:
Kotlin
// Not applicable in Kotlin. data class User(val firstName: String, val lastName: String)
Java
public class User { private final String firstName; private final String lastName; public User(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public String getFirstName() { return