android MVVM开发模式(三)
为了更好地理解@BindingAdapter,github地址里面提交了一个adapters目录,将系统提供的适配提交上去,以便查阅。
回顾
我们前两节讲了哪些内容呢?
mvvm模型概念
dataBinding是什么
演示xml如何变为了代码
演示了数据自动通知BaseObservable
通过上面的学习,我们掌握了xml变成代码,并且数据(Model)和View通过dataBinding关联起来是如何操作的了。有人就说了,毕竟系统提供的适配器(@BindingAdapter标注的静态方法 )有限,我们能自己定义属性对应的方法吗?
答案是YES。因此我们就要自己去写自己的@BindingAdapter,来完成我们所需要的功能。如此一来,我们会发现这个dataBinding的突出优势来了。
so,我们看步骤:
1加个自定义属性
添加一个age年龄的属性,标记类型为整数2在我们的xml使用
加入属性值,和User里面的age关联。(因为是我们自定义的属性,系统肯定不知道对应的函数方法是什么,因此@BindingAdapter来给指明方向)3适配方法
随便在一个位置,写入如下代码:必须静态函数,原因很好理解。(不是静态含需要对应实例,用起来很怪。)
两个参数,第一个就是我们是在哪里是用的,因为我们是在一个TextView使用的,因此第一个参数是TextView类型。第二个就是我们定义的类型了,int,实现下操作即可。4演示
在我们的User类里面,写上:
加入了一个值age,标记成可观测
实现一个设置接口啦。
调用地方:
我们看到,当赋值年龄之后,界面正确的显示出来了。效果如下:
5后记
我们看下这个@BindingAdapter最后在ActivityMainBinding承载着什么关系,直接看代码:
看到了吧。我们使用工具的时候,第一要素是什么呢?就是我们先去思考我们会遇见哪些问题,然后就可以去找对应的解决方案了。用我们的实际做法,去对应着这个dataBinding来实现,这样子我们就很快理解这个东西的实质了。6代码位置