Data Binding 基础

dataBind的使用

1。 引入注意:  build.gradle 文件中加入android下加入:

      dataBinding{

            enabled = true

      }

2。布局文件注意

根节点变成了layout , 并且新增了一个节点data

data节点的作用:

        给View和Model之间的建立映射的联系。实现数据到UI的绑定。

variable节点的作用

        为UI元素提供数据, 然后在java代码中把数据与这个variable进行绑定

属性作用:

        name :取得名字,一般取对应的javabean的类,描述了布局中会用到的属性, 布局文件中使用  @{} 语法

        type: 声明对应的javabean类

        class:自定义生成的Binding类

        alias : 别名,用来出现导入同名的类


       java.lang.*包中的类会被自动导入,无需再import。

3 。绑定Variable注意

在默认情况下,会基于布局文件生成一个继承与ViewDataBinding的Binding 类, 名字取名规则: 转换帕斯卡命名并在名字后面加上Binding;也可以在data下通过 class方式自定义类名

生成的绑定类,包含了布局文件中的所以绑定关系, 会根据绑定的表达式给布局文件赋值。

在Activity中,用DataBindingUtil.setContentView 替换掉setContentView 

在使用inflate,用DataBindingUtil.inflate()替换

4 . 空合并运算符  ??   会在非null的时候选择左边的操作,否则选择右边。 等价于三目运算符  ? :  

5  Binding 类会生成一个命名为 content的特殊变量, 就是getContext()的返回值,可以用于表达式中。  

6 includes中使用:在使用应用命名空间的布局中, 变量可以传递到任何 include布局中。 在各自的布局中都要申明相应的变量 

7 不支持 merge节点 

8 通用的容器类:数组, List  SparseXXX , Map ,可以用[] 操作符来存取 

9 带id的view , DataBind就会生成一个对应的final 变量 

10 事件处理

1。方法引用 :在表达式中, 引用符合监听方法签名的方法。 优点 :表达式在编译时处理,方法不存在或签名不正确 编译出错  :: 调用

2. 监听器绑定,lambda 表达式,  事件发生时,处理。() -> 处理

11  自定义binding 逻辑   在布局文件中自定义属性xxx , 在布局文件中使用。 在对应逻辑的方法处通过加上@BindingAdapter({“xxx”}) 设置该属性,则绑定后会自动调用。


你可能感兴趣的:(Data Binding 基础)