一些databinding 赋值小技巧

①dataBinding在xml文件是支持import,可以导入java支持的包,所以也就可以进行简单的运算,比如上面的xml中就用了三元运算符
动态设置颜色

android:textColor="@{user.vip? 0xffff0000:0xff000000}"

当导入的用户是vip的时候,文本颜色会设置为红色,当不是vip的时候会显示黑色

②而且支持java的字符串拼接

android:text="@{user.nickName + `(` + user.name +`)`}"

细心的网友肯定会发现,这个字符串拼接的时候用到的里面不是单引号‘,而是一个数字键1左边那个键`。

其中在dataBinding的xml文件中,是不支持双引号中加单引号的,但是支持单引号中加双引号,在双引号中可以加`;

也可以把字符写到String 文件中,赋值这样写

android:text="@{user.nickName + `@string/aa`}"
注意是@string 

③细心的网友还会发现xml中有这样一句话

android:text="@{user.nickName ?? user.name}"

这里用了双冒号??代表的意思是,如果user.nickName为空,则显示user.name,如果不为空,则显示nickName;

其中这句话等于  user.nickName == null ? user.name : user.nickName;

④既然这是xml布局,大家肯定知道在xml中是不允许用<>的,用的话会被默认是标签,那么如果一定要用<>做比较表达式呢,这里可以使用转义来解决。

代码中有这样一句话:

android:textColor="@{user.level < 3 ? 0xff03bbf9 : 0xfff60bdb }
其中的< 代表的就是小于符号<,意思是如果用于等级小于3,则邮箱文本为蓝色,否则文本为紫色。

⑤而我们实际运用中肯定也会有很多的点击事件,那么如何实现点击事件的呢?

这就是我们为什么在dataBean实体类User中添加了两个方法的原因

public void clickName(View view){
        Toast.makeText(view.getContext(),"点击了用户名",Toast.LENGTH_SHORT).show();
    }

这两个方法其实不一定写在实体类中,其实写在其他类中也是可以的,不过我更推荐写在实体类中,因为触发事件的时候,很有可能会用到实体类的其他属性,写在这里面调用起来就变得比较轻松了。

然后再把事件和xml中绑定在一起


这个中间有onClick和onLongClick用于绑定。

设置View上属性默认值


语法就是在完整的属性值最后用英文的逗号隔开, 加上default=xxxx, 注意这个默认值是不能加上引号的。

你可能感兴趣的:(Android,databinding,databinding设置颜色)