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”}) 设置该属性,则绑定后会自动调用。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容