数据的绑定好处这里就不多说了,今天谈一谈 android 上的数据绑定了,也就是如何实现 MVVM 模式的。我们今天介绍一下 android 原生提供 databinding 来实现 MVVM 模式的。
首先我们要将我们布局(也就是视图)对应到一个数据模型,一个视图对应一个数据模型,也可以对应多个数据模型
要使用 android 的 databing 我们需要做一些准备工作,在 build.gradle 中添加 dataBinding 中添加 enabled = true ,来添加 databinding 功能。
看一看我们是如何让视图与数据建立关系的
我们用 layout 将linearLayout包括起来然后我们xmlns 什么都从原来的布局标签中移动到layout中。然后在 data 标签中添加一些与数据相关的标签。import 标签可以引入一些在数据绑定时用到的类,这里我们用到显示视图和隐藏数据 view.GONE 和 view.VISIBLE ,所以我们这里引用了 view 类。
这里的 variable 对应一个数据模型,name 为在 layout 使用绑定的数据模型的别名,type 就是这个别名对应的数据模型的类,类需要包括包名。
这里绑定格式为 @{prod.name}
在 Product 类中我们有对应名称,这样我们就完成一半的工作。返回到我们的 Activity 类中。通过 compile 实现数据绑定。
编译过程自动生成一个ActivityDemoABinding 看名字,他是根据一定规则从 DemoAActivity 生成的,这个类不用自己创建,系统自动生成,如果没有我们,我们需要 rebuild project 一下,就有了
在 activity 我们需要Activity 的绑定对象与数据 product 对象绑定,然后我们知道如果要双向绑定我们还需要监控值的变化来反映到到视图上,我们需要对要监控的数据模型的字段 getter 上加 @Bindable 注解,然后在 setter 上中 notifyPropertyChange(BR.字段名)当该字段发生变化时发出通知。
如果我们需要的绑定的属性在系统并没有提供,我需要使用@BindingAdapter 来实现,合理示例就是自己定义个加载图片的属性给标签ImageView
数据绑定内容很多今天就分享到这里吧,休息一会儿