Data Binding 系列(一)概览

栏目: IOS · Android · 发布时间: 5年前

内容简介:通常我们会在 activity 里面调用 UI 框架层的方法声明 view。例如,下面的代码调用了下面的代码展示了如何使用

Data Binding 是一个支持库,它使用一种 声明的方式 代替 编码的方式 ,用来绑定 UI 控件和数据源。

通常我们会在 activity 里面调用 UI 框架层的方法声明 view。例如,下面的代码调用了 findViewById() 声明了一个 TextView 控件,并且把它和 viewModeluserName 属性进行了绑定:

findViewById<TextView>(R.id.sample_text).apply {
    text = viewModel.userName
}
复制代码

下面的代码展示了如何使用 Data Binding 在布局里面直接给 TextViewtest 属性进行赋值。这么做的好处是不必再像上面的例子一样调用 Java 代码。注意在赋值表达式中使用的语法是 @{}

<TextView
    android:text="@{viewmodel.userName}" />
复制代码

在布局里面直接绑定 UI 控件,可以减少在 activity 中 UI 框架方法的调用,这使得代码更加简洁、更容易维护。它还可以提升 App 的性能,避免内存泄漏和空指针异常。

使用

会分下面几个部分来展开介绍 Data Binding

1 环境准备

介绍了如何准备 Data Binding 的开发环境。

绑定表达式的使用建立了 view 和变量之间的联系。 Data Binding 会自动生成一些类用于绑定 view 和 数据。它提供了诸如 importsvariablesincludes 等在布局中可以直接使用的特性。

这些特性可以和现有的布局很好地共存。比如,可以在绑定表达式中直接使用的变量是定义在 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

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转16进制工具

RGB HEX 互转工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具