数据绑定库是一个支持库,允许您使用声明性格式而不是以编程方式将布局中的UI组件绑定到应用程序中的数据源。
findViewById<TextView>(R.id.sample_text).apply {
text = viewModel.userName
}
以下示例说明如何使用数据绑定库直接在布局文件中将文本分配给窗口小部件。这消除了调用上面显示的任何Java代码的需要。注意@{}在赋值表达式中使用语法:
<TextView android:text="@{viewmodel.userName}" />
布局文件中的绑定组件允许您在活动中删除许多UI框架调用,使其更简单,更易于维护。这还可以提高应用程序的性能,并有助于防止内存泄漏和空指针异常。
使用数据绑定库
使用以下页面了解如何在Android应用程序中使用数据绑定库。
了解如何使您的开发环境随时可以使用数据绑定库,包括支持Android Studio中的数据绑定代码。
表达式语言允许您编写将变量连接到布局中视图的表达式。数据绑定库自动生成将布局中的视图与数据对象绑 定所需的类。该库提供了可在布局中使用的导入,变量和包含等功能。
库的这些功能与您现有的布局无缝共存。例如,可以在表达式中使用的绑定变量在data元素内定义,该元素是UI布局的根元素的兄弟。两个元素都包含在layout标记中,如以下示例所示:
<data>
<variable name="viewmodel" type="com.myapp.data.ViewModel" />
</data>
<ConstraintLayout... /> <!-- UI layout's root element --></layout>
数据绑定库提供了类和方法,可以轻松地观察数据以进行更改。您不必担心在基础数据源发生更改时刷新UI。您可以观察变量或其属性。该库允许您使对象,字段或集合可观察。
数据绑定库生成用于访问布局的变量和视图的绑定类。此页面显示如何使用和自定义生成的绑定类。
@BindingAdapter("app:goneUnless")
fun goneUnless(view: View, visible: Boolean) {
view.visibility = if (visible) View.VISIBLE else View.GONE
}
数据绑定库支持双向数据绑定。用于此类绑定的表示法支持接收对属性的数据更改并同时侦听对该属性的用户更新的能力。