一些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实现ListView或GridView首行/尾行距离屏幕边缘距离
- 记录用ConstraintLayout实现控件view最大高度的过程
- android 自定义属性通过反射关联组件与方法
- Android(安卓)属性动画(Property Animation) 完全解析 (上)
- Android五大布局详解——LinearLayout(线性布局)
- UI组件之TextView及其子类(一)TextView和EditText
- Android系统input系统(1)
- 自定义程序实现Android(安卓)EditText只允许输入指定字符
- [置顶] 超赞!!Android视图讲解!!以及Android内坐标分析!!!