android mvvm架构项目结构_android


android MVVM开发模式(三)

为了更好地理解@BindingAdapter,github地址里面提交了一个adapters目录,将系统提供的适配提交上去,以便查阅。

回顾
我们前两节讲了哪些内容呢?
mvvm模型概念
dataBinding是什么
演示xml如何变为了代码
演示了数据自动通知BaseObservable

通过上面的学习,我们掌握了xml变成代码,并且数据(Model)和View通过dataBinding关联起来是如何操作的了。有人就说了,毕竟系统提供的适配器(@BindingAdapter标注的静态方法 )有限,我们能自己定义属性对应的方法吗?

答案是YES。因此我们就要自己去写自己的@BindingAdapter,来完成我们所需要的功能。如此一来,我们会发现这个dataBinding的突出优势来了。

so,我们看步骤:

1加个自定义属性

android mvvm架构项目结构_android_02


添加一个age年龄的属性,标记类型为整数2在我们的xml使用

android mvvm架构项目结构_android mvvm架构项目结构_03


加入属性值,和User里面的age关联。(因为是我们自定义的属性,系统肯定不知道对应的函数方法是什么,因此@BindingAdapter来给指明方向)3适配方法

android mvvm架构项目结构_开发模式_04


随便在一个位置,写入如下代码:必须静态函数,原因很好理解。(不是静态含需要对应实例,用起来很怪。)

两个参数,第一个就是我们是在哪里是用的,因为我们是在一个TextView使用的,因此第一个参数是TextView类型。第二个就是我们定义的类型了,int,实现下操作即可。4演示

在我们的User类里面,写上:

加入了一个值age,标记成可观测

android mvvm架构项目结构_android mvvm架构项目结构_05


实现一个设置接口啦。

android mvvm架构项目结构_android mvvm架构项目结构_06


调用地方:

android mvvm架构项目结构_android_07


我们看到,当赋值年龄之后,界面正确的显示出来了。效果如下:

android mvvm架构项目结构_xml_08


5后记

我们看下这个@BindingAdapter最后在ActivityMainBinding承载着什么关系,直接看代码:

android mvvm架构项目结构_android_09


看到了吧。我们使用工具的时候,第一要素是什么呢?就是我们先去思考我们会遇见哪些问题,然后就可以去找对应的解决方案了。用我们的实际做法,去对应着这个dataBinding来实现,这样子我们就很快理解这个东西的实质了。6代码位置