数据绑定库 Android Jetpack 的一部分。
数据绑定库是一个支持库,使您能够绑定界面 使用声明式方法将布局中的组件发送到应用中的数据源 而不是以编程方式
布局通常在 activity 中使用调用界面框架的代码进行定义
方法。例如,以下代码会调用 findViewById()
来查找 TextView
widget 并将其绑定到userName
viewModel
变量:
Kotlin
findViewById<TextView>(R.id.sample_text).apply { text = viewModel.userName }
Java
TextView textView = findViewById(R.id.sample_text); textView.setText(viewModel.getUserName());
以下示例展示了如何使用数据绑定库来分配文本
直接添加到该 widget 布局文件中。这样,您就无需调用
上面所示的 Java 代码请注意在赋值中使用 @{}
语法
表达式:
<TextView
android:text="@{viewmodel.userName}" />
通过布局文件中的绑定组件,您可以从中移除许多界面框架调用 并使它们更易于维护。这还可以 提高应用性能,并帮助防止内存泄漏和 null 指针 异常。
使用数据绑定库
请参阅以下页面,了解如何在您的 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()
方法 设置文本属性,或调用setOnClickListener()
方法来添加 点击事件监听器。最常见的绑定适配器,如 适用于本页示例中使用的android:text
属性的适配器, 可供您在android.databinding.adapters
软件包中使用。 如需查看常见绑定适配器的列表,请参阅 适配器。 您还可以创建自定义适配器,如以下示例所示 :
Kotlin
@BindingAdapter("app:goneUnless") fun goneUnless(view: View, visible: Boolean) { view.visibility = if (visible) View.VISIBLE else View.GONE }
Java
@BindingAdapter("app:goneUnless") public static void goneUnless(View view, Boolean visible) { view.visibility = visible ? View.VISIBLE : View.GONE; }
- 将布局视图绑定到架构组件
- Android 支持库包含架构 组件,可用于 设计稳健、可测试且可维护的应用。您可以使用此架构 带有数据绑定库的组件,可进一步简化开发工作 界面设计
- 双向数据绑定
- 数据绑定库支持双向数据绑定。用于 这种类型的绑定支持接收属性的数据更改 并同时监听用户对相应媒体资源进行的更新。
其他资源
如需详细了解数据绑定,请参阅以下资源: 其他资源
示例
- <ph type="x-smartling-placeholder"></ph> Android 数据绑定库示例
Codelab
- <ph type="x-smartling-placeholder"></ph> Android 数据绑定 Codelab
博文
为您推荐
- 注意:当 JavaScript 处于关闭状态时,系统会显示链接文字
- 绑定适配器 {:#binding-adapters}
- 布局和绑定表达式
- 生成的绑定类 {: #binding-classes}