Ответ
DataBinding позволяет связывать UI-компоненты напрямую с данными, уменьшая boilerplate-код. Опыт включает:
- Базовое использование – связывание переменных в XML:
<TextView
android:text="@{viewmodel.userName}" />
- Двусторонний биндинг (для EditText и др.):
<EditText
android:text="@={viewmodel.userInput}" />
- Кастомные биндинг-адаптеры для сложных случаев:
@BindingAdapter("imageUrl")
fun loadImage(view: ImageView, url: String?) {
Glide.with(view.context).load(url).into(view)
}
- Работа с LiveData – требует явного указания жизненного цикла в биндинге:
binding.lifecycleOwner = this
- Обработка событий через лямбды или методов:
<Button
android:onClick="@{() -> viewmodel.onButtonClick()}" />
Использовал в проектах для упрощения кода, особенно в RecyclerView. Важно помнить о необходимости включения DataBinding в build.gradle и избегать сложной логики в XML.