DataBining从基本使用到核心源码解析,看不懂的兄弟跟我一起去摆摊

本文介绍了Android DataBinding的使用,包括数据源的设置、双向绑定、ObservableField以及高级用法如自定义Setter。通过实例展示了如何在数据源变化时自动更新UI,并探讨了DataBindingUtil的内部机制。
摘要由CSDN通过智能技术生成

步骤一 首先定义好一个普通的JavaBean,这就是控件需要的数据源,不需要做任何的特殊处理。

步骤二 修改布局成databinding布局

进入activity的布局文件,鼠标放到根布局上,然后同时按住alt+enter打开系统提示框。由于我们之前在build.gradle中设置了打开dataBinding,所以当前会出现Convert to data binding layout选项,顾名思义就是转换成dataBinding支持的布局模式,选择该选项即可。

选择好了该模式以后,布局文件大概就会变成这样子。布局最外层给自动加上了layout便签,包裹了我们最初的根布局。其次,系统自动生成了和之前的根布局同级。

接下来只需要在data标签里面配置好系统自动生成类的类名,以及属性即可。其中variable中name有两个作用,第一是使用该数据源,第二个是用来自动生成更新数据时调用的方法名,type指定好前面我们写好的那个bean即可。在控件上使用时只需要通过@{name.field}的方式设置在控件上即可,当然这里以TextView为例,ImageView需要特殊处理,后面会讲到。

经过以上的准备工作,接下来就要开始正式使用了。我这里打开了一个线程,然后每过一秒变化一下数据源,注意每次修改了数据源,最后都需要调用setTestVariable方法才能生效

运行效果如下:

效果符合预期,每过一秒就自动更新数据,而我们并没有对TextView进行setText操作。

我们成功地实现了在数据源变化的时候自动设置到ui上面,也仅仅是实现了功能而已,但是这种方法非常地笨拙,每次数据源更新的时候还要给dataBinding重新设置数据源,操作很麻烦,那有没有只需要写一遍就可以初始化数据源,从而一劳永逸的办法呢?答案是有的,接下来,我们来看看方式2。

方式2、利用@Bindable注解以及官方的notifyPropertyChanged方法来实现

xml文件不需要变,按照方式1的写法就可以了,只需要在Bean的字段的get方法上面加上@Bindable注解,然后在字段的set方法里调用一下notifyPropertyChanged方法即可,需要注意的是,必须要继承BaseObservable才会有该方法。其中@Bindable是告诉DataBinding在可以调用getName方法来获取name的值,notifyPropertyChanged方法是告知DataBinding当前数据已修改,快去调用get方法获取最新数据吧!所以不用重新设置数据源的原因大家也都看出来了,其实就是在给Bean设值的时候通知了DataBinding,然后DataBind自动去更新了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值