内容简介:通常我们会在 activity 里面调用 UI 框架层的方法声明 view。例如,下面的代码调用了下面的代码展示了如何使用
Data Binding
是一个支持库,它使用一种 声明的方式
代替 编码的方式
,用来绑定 UI 控件和数据源。
通常我们会在 activity 里面调用 UI 框架层的方法声明 view。例如,下面的代码调用了 findViewById()
声明了一个 TextView
控件,并且把它和 viewModel
的 userName
属性进行了绑定:
findViewById<TextView>(R.id.sample_text).apply { text = viewModel.userName } 复制代码
下面的代码展示了如何使用 Data Binding
在布局里面直接给 TextView
的 test
属性进行赋值。这么做的好处是不必再像上面的例子一样调用 Java 代码。注意在赋值表达式中使用的语法是 @{}
:
<TextView android:text="@{viewmodel.userName}" /> 复制代码
在布局里面直接绑定 UI 控件,可以减少在 activity 中 UI 框架方法的调用,这使得代码更加简洁、更容易维护。它还可以提升 App 的性能,避免内存泄漏和空指针异常。
使用
会分下面几个部分来展开介绍 Data Binding
。
1 环境准备
介绍了如何准备 Data Binding
的开发环境。
绑定表达式的使用建立了 view 和变量之间的联系。 Data Binding
会自动生成一些类用于绑定 view 和 数据。它提供了诸如 imports
、 variables
、 includes
等在布局中可以直接使用的特性。
这些特性可以和现有的布局很好地共存。比如,可以在绑定表达式中直接使用的变量是定义在 data
元素标签中的, 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> 复制代码
Data Binding
提供了一些类和方法使得观察数据的变化变得很简单。你大可不必担心数据变化时刷新 UI 的问题。它提供了使对象、字段、集合变得可观察的方法。
4 生成绑定类( binding class
)
Data Binding
自动生成了一些类用来访问布局变量和 view。这一章会向你展示如何使用和自定义这些生成的绑定类。
5 绑定适配器( binding adapter
)
对于每一个绑定表达式,都会有相应的绑定适配器调用框架的方法去设置对应的属性或者监听器。比如,绑定适配器会调用 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 } 复制代码
6 绑定 view 和其他架构组件
使用 Data binding
还可以将 view 和其他架构组件绑定,从而简化 UI 的开发。
7 双向数据绑定( two-way data binding
)
Data binding
支持双向数据绑定。既可以数据变化刷新 view,也可以 view 刷新更新数据。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Bulletproof Web Design
Dan Cederholm / New Riders Press / 28 July, 2005 / $39.99
No matter how visually appealing or packed with content a Web site is, it isn't succeeding if it's not reaching the widest possible audience. Designers who get this guide can be assured their Web site......一起来看看 《Bulletproof Web Design》 这本书的介绍吧!
RGB转16进制工具
RGB HEX 互转工具
RGB HSV 转换
RGB HSV 互转工具