Android DataBinding 第一滴血

Android DataBinding 第一滴血

   学Angular2有一段时间了,感觉到数据绑定的爽。以前不喜欢用注解框架的我,一直还在用findViewByIdAndroid开发。最近看到原来Android的数据绑定早就有了,而且可以双向。发现自己落后了,于是每日demo要走起了...

环境:Android studio2.1.2

 Model gradle配置:

 

只需要添加dataBinding{

enable=true

}

就可以了。

 

编写代码

  1)首选,我们来个最简单的数据实体:

 

 

2)然后我们来编写xml布局文件的开始部分:

   I.首先,我们做一个改变,原来的xml布局文件最外层是一个layout容器,比如说:LinearLayout,但是现在我们的最外层就是layout标签

   II.其次,我们把数据实体声明进来,相当于用java代码import一个类,然后创建这个类的一个属性。

  如下截图:

 

 III.这么神奇?这样就直接可以在xml中使用这个实体了?NO

   之前我们的代码里只是定义了个类而已,数据在哪呢?具体的user对象怎么和这个xml关联呢?看下面:

3)关联对象:

 

这里的做法,首先是直接new一个对象出来随便填上一些数据,毕竟是demo嘛,简单点;然后是利用DataBindingUtil来做一件事,把对应的xmlActivity绑定起来,同时产生一个ActivityMainBinding的实例返回。

那么这个ActivityMainBinding又是个什么东西呢?

这个ActivityMainBinding就是实现数据绑定的一个核心类了,也可以说是xmlActivity的一个桥梁。xmlActivity通过这个类进行数据绑定,双向通信,变化监控等。

ActivityMainBinding会由AndroidStudio在写完xml布局文档后自动产生,不需要自己添加。

利用ActivityMainBinding绑定数据后,xmluser属性就相当于被实例化了,如何在xml使用这个user属性呢?看下面:

 

上面的截图是使用user.name的两种方式,那么有什么区别呢?

第一种方式只用于显示,不会改变user.name的值。

每二种方式用户可以通过输入框来修改user.name的值。

到目前为止,如果你在editText输入,在Activity中打断点,你们会发现,user.name的值被改变了。但是,你会发现,TextView的显示没有任何变化。这是怎么回事呢?

Android的双向数据绑定,默认并没有帮我们刷新界面。那么怎么刷新界面,让新界面的显示随着数据实体的变化实时更新呢?请看下面:

 

上面代码中,binding对象就是前文提到的ActivityMainBinding对象;在它身上添加一下个监听器,实现三个方法。图中注释说明了使用。如果有哪位知道onCancled是在什么情况下触发的,请分享。

本次Android的数据双向绑定的基本使用分享到此为止,因为本人水平有限,也没有研读源码,如有错误,欢迎指正!谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值