Библиотека привязки данных . Часть Android Jetpack .

Библиотека привязки данных — это библиотека поддержки, которая позволяет вам привязывать компоненты пользовательского интерфейса в макетах к источникам данных в вашем приложении, используя декларативный формат, а не программно.

Макеты часто определяются в действиях с кодом, который вызывает методы платформы пользовательского интерфейса. Например, приведенный ниже код вызывает findViewById() чтобы найти виджет TextView и привязать его к свойству userName переменной viewModel :

Котлин

findViewById<TextView>(R.id.sample_text).apply {
    text = viewModel.userName
}

Ява

TextView textView = findViewById(R.id.sample_text);
textView.setText(viewModel.getUserName());

В следующем примере показано, как использовать библиотеку привязки данных для назначения текста виджету непосредственно в файле макета. Это устраняет необходимость вызова любого кода Java, показанного выше. Обратите внимание на использование синтаксиса @{} в выражении присваивания:

<TextView
    android:text="@{viewmodel.userName}" />

Связывание компонентов в файле макета позволяет удалить многие вызовы инфраструктуры пользовательского интерфейса в ваших действиях, что делает их более простыми и легкими в обслуживании. Это также может повысить производительность вашего приложения и помочь предотвратить утечки памяти и исключения нулевых указателей.

Использование библиотеки привязки данных

На следующих страницах вы узнаете, как использовать библиотеку привязки данных в приложениях Android.

Начать
Узнайте, как подготовить среду разработки к работе с библиотекой привязки данных, включая поддержку кода привязки данных в Android Studio.

Макеты и выражения привязки

Язык выражений позволяет писать выражения, которые связывают переменные с представлениями в макете. Библиотека привязки данных автоматически генерирует классы, необходимые для привязки представлений в макете к вашим объектам данных. Библиотека предоставляет такие функции, как импорт, переменные и включения, которые вы можете использовать в своих макетах.

Эти функции библиотеки легко сосуществуют с существующими макетами. Например, переменные привязки, которые можно использовать в выражениях, определяются внутри элемента data , который является родственным корневому элементу макета пользовательского интерфейса. Оба элемента заключены в тег layout , как показано в следующем примере:

<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>

Работа с наблюдаемыми объектами данных
Библиотека привязки данных предоставляет классы и методы, позволяющие легко отслеживать изменения в данных. Вам не нужно беспокоиться об обновлении пользовательского интерфейса при изменении базового источника данных. Вы можете сделать свои переменные или их свойства наблюдаемыми. Библиотека позволяет делать объекты, поля или коллекции наблюдаемыми.
Созданные классы привязки
Библиотека привязки данных генерирует классы привязки, которые используются для доступа к переменным и представлениям макета. На этой странице показано, как использовать и настраивать созданные классы привязки.
Привязка адаптеров
Для каждого выражения макета существует адаптер привязки, который выполняет вызовы платформы, необходимые для установки соответствующих свойств или прослушивателей. Например, адаптер привязки может позаботиться о вызове метода setText() для установки свойства text или вызвать метод setOnClickListener() для добавления прослушивателя к событию щелчка. Наиболее распространенные адаптеры привязки, такие как адаптеры для свойства android:text используемые в примерах на этой странице, доступны для использования в пакете android.databinding.adapters . Список общих адаптеров привязки см. в разделе адаптеры . Вы также можете создавать собственные адаптеры, как показано в следующем примере:

Котлин

@BindingAdapter("app:goneUnless")
fun goneUnless(view: View, visible: Boolean) {
    view.visibility = if (visible) View.VISIBLE else View.GONE
}

Ява

@BindingAdapter("app:goneUnless")
public static void goneUnless(View view, Boolean visible) {
    view.visibility = visible ? View.VISIBLE : View.GONE;
}
Привязка видов компоновки к компонентам архитектуры
Библиотека поддержки Android включает компоненты архитектуры , которые можно использовать для разработки надежных, тестируемых и поддерживаемых приложений. Вы можете использовать компоненты архитектуры с библиотекой привязки данных, чтобы еще больше упростить разработку пользовательского интерфейса.
Двусторонняя привязка данных
Библиотека привязки данных поддерживает двустороннюю привязку данных. Нотация, используемая для этого типа привязки, поддерживает возможность получать изменения данных свойства и одновременно прослушивать обновления этого свойства, сделанные пользователем.

Дополнительные ресурсы

Чтобы узнать больше о привязке данных, обратитесь к следующим дополнительным ресурсам.

Образцы

Кодлабы

Сообщения в блоге

{% дословно %} {% дословно %} {% дословно %} {% дословно %}