android Data Binding(01 入门篇)
https://www.jianshu.com/p/7a9ddf4f1301
android Data Binding(02 数据刷新)
https://www.jianshu.com/p/59fc32f1f0aa
android Data Binding(03 点击事件)
https://www.jianshu.com/p/b83c83dbc43d
android Data Binding(04 双向绑定 和布局倒入)
https://www.jianshu.com/p/94a17cd869d5
android Data Binding(05自定义属性)
https://www.jianshu.com/p/2edff6132d3b
android Data Binding(06 列表绑定)
https://www.jianshu.com/p/5c91bf49e057
android Data Binding(07 零散汇总)
https://www.jianshu.com/p/882a2169868b
中秋节过了,国庆还远么?
这次玩点有意思点,我们上次说的自定义属性?
先讲下@BindingMethods,这个我个人认为属于类扩展,为什么呢?
一些View一些属性虽然拥有setters但是并不与名字相匹配,这些方法的属性可以通过 @BindingMethod && @BindingMethods 注释 setters,其实开发人员不太可能需要重命名 setters ,因为android框架属性已经实现了这一部分。
找了半天,就拿ImageView的tint来展示下,其实tint也已经框架实现了



运行一下,其实我们写不写,BindShow那个类,出来效果也是这样的,其实,就是如果Imageview没有setTint方法,我们会走setImageTintList这个正确的方法,你可以理解为,android 默认设置某属性,应该是调用set属性名,但是如果没有set属性名这个方法,就应该去调用set属性真实名字,其实对着写一次就好了,干说很难理解。
好吧,这个感觉可有可无的过去,我们开启新的一段欢乐时光,关于“自定义属性”,为什么加引号,其实我感觉这个也就在dadabinding里面能用,出去就凉了
我们引BindingAdapter

在我们布局文件引用


我们输入老王,看看效果怎么样,发现输入的是老王,显示的确实leo--老王,我们发现方法被调用了


其实通过这个小例子,我们可以得出,所谓自定义属性,当属性用在参数匹配上的 时候,就可以被调用
我们将这个属性用在Imageview上试试,发现报错了,是因为这个属性的第一个参数是TextView和ImageView匹配不上,所以报错,


那我们写个ImageVIew的试下
我们的目的是通过自定义属性可以实现自动加载网络图片,写好我们的自定义属性

布局调用,user传入值


我们看到方法调用成功

也就是说以后我们可以直接一个属性,对着URL做很多事,比如自动加载页面,再也不用findView然后去Glideload那么麻烦,可以一个属性搞定
有一个问题很好奇,我直接在这个自定义属性里写入一段文本可以么?

答案是不行,原因未知等待大家告知我

好吧,下一篇我们写一下如何在列表里使用DataBinding
android Data Binding(06 列表绑定)
地址链接 https://www.jianshu.com/p/5c91bf49e057
网友评论