Библиотека привязки данных . Часть 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 включает компоненты архитектуры , которые можно использовать для разработки надежных, тестируемых и поддерживаемых приложений. Вы можете использовать компоненты архитектуры с библиотекой привязки данных, чтобы еще больше упростить разработку пользовательского интерфейса.
- Двусторонняя привязка данных
- Библиотека привязки данных поддерживает двустороннюю привязку данных. Нотация, используемая для этого типа привязки, поддерживает возможность получать изменения данных свойства и одновременно прослушивать обновления этого свойства, сделанные пользователем.
Дополнительные ресурсы
Чтобы узнать больше о привязке данных, обратитесь к следующим дополнительным ресурсам.
Образцы
Кодлабы
Сообщения в блоге
Рекомендуется для вас
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- Привязка адаптеров {:#binding-adapters}
- Макеты и выражения привязки
- Созданные классы привязки {: #binding-classes}