Jetpack系列:数据绑定~双向绑定

 

Jetpack系列:数据绑定~双向绑定_第1张图片

上一篇介绍了数据绑定使用ViewModel的例子,本篇将简单说一个使用双向绑定实现界面刷新的例子。


 

如上是使用双向绑定实现的一个简单的界面显示功能,此界面中实现的功能有:

 

  1. 显示Work进程处理进度,设置Work进程处理时长;

  2. 显示Rest进程处理进度,设置Reset进程处理时长;

  3. 设置进程循环次数;

  4. 启动、暂停、停止进程运行,界面恢复。

 

DataBinding的双向绑定到底是什么呢?

 

通过Google官方的介绍,传统的绑定方式如下:

    android:id="@+id/rememberMeCheckBox"    android:checked="@{viewmodel.rememberMe}"    android:onCheckedChanged="@{viewmodel.rememberMeChanged}"/>

UI需要指定状态变化通知到代码的值,并且增加针对该属性值变更时的监听器。

 

引入双向绑定之后,精简如下:

    android:id="@+id/rememberMeCheckBox"    android:checked="@={viewmodel.rememberMe}"/>

UI和代码数据的获取、变更通知等操作由checked值的设置方法统一管理,在checked值发生变化时,需要代码同步做变更处理,去掉了checkedChanged监听器的注册逻辑,实现了接收对该属性的数据更改并同时侦听用户更新的功能。

 

双向绑定中,使用@InverseBindingAdapter和@BindingAdapter注解配合完成功能实现,其中InverseBindingAdapter为代码用来从UI上获取值,BindingAdapter为代码往UI设置值。

 

通过双向调用的实现,对于UI层与代码层数据的获取和变更处理都变得非常方便,有关双向数据调用的详细使用方法,可参考Google官方说明文档,此处不再赘述,可参考如下双向绑定DEMO进行开发。

 

附双向绑定DEMO地址:

https://gitee.com/danvie/danvie-databinding

 

这里有更多科技咨询,新技术学习,关注我们,和我们一起成长!

你可能感兴趣的:(技术分享)