android data binding jetpack VII

解决前面 item imageview如果和一个url绑定,怎么来展示。

BindingAdapter 

字面意思:绑定适配???

推荐大神文章:https://www.jianshu.com/p/686bfc58bbb0

 不再多说了。记录自己的理解。

当要给一个View绑定一个数据,但数据不能直接满足需求。比如用一个View来展示金钱。格式是:$1000.00。

如果返回数据只有1000.00我们要加上$符。直接把数字绑定给view就不能满足了。

现在需要建立新的绑定过程。

可以这样写:

 @BindingAdapter("android:text")
    public static void setTxt(final TextView tv, String str) {
        tv.setText("$:" + str);
    }

这个方法可以扔在任何一个类里。注解要自动解析并起作用。注解的引入有时候让程序变得难以理解。

布局绑定不变。

结果:

在所有的textview text 绑定里都起作了。说明这个绑定规则是全局。

所以也不能这么改了。

观察一下实现过程:

整个定义的意思是:现在我们在全局建立一个绑定规则的,对于这个属性,使用

这个方法来绑定。

如果自定义一个规则如下:

   @BindingAdapter("app:money")
    public static void setMoney(final TextView tv, String str) {
        tv.setText("$:" + str);
    }

然后在xml中使用。把原来的text改回去。

app这个命空间说是随便起,因为运行过程会忽略。

看结果:

正是我们想要的,字符前面加了$.也就是我们定义的运算结果。

回过来看前面的代码:

给ImageView 加了一个属性规则叫:,然xml中绑定使用。最终展示了一个图片资源对imageview.

更深入理解请看官言文档和源码。

总结:1.BindingAdapter是建一个绑定规则。

      2.这个规则写在哪儿都行。

   3.是全局的,所有人通用。

声明:本系列文字可能不太严谨,请阅读者自我甄别。

猜你喜欢

转载自www.cnblogs.com/mamamia/p/10103007.html