Android-DataBinding使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android-DataBinding使用相关的知识,希望对你有一定的参考价值。

参考技术A

使用DataBinding,布局最外层一定是<layout>标签,可以没有<data>标签。
如果是使用<data>标签,那么一般用来定义变量,或者导包。

如果是在<data>标签中导包,也是使用<import>标签,通过<import>标签的type属性引入对应的类,可以使用alias属性定义一个别名,也可以不使用alias定义别名,如果是使用了alias定义别名,则使用这个导入的类的时候,就可以直接使用别名,如果没有使用alias,则使用的时候,直接使用类名。
这里就可以直接调用对应的类的方法,然后返回对应的值进行使用,比如通过用户信息user进行一定的逻辑判断返回一个boolean值,交给自定义的View的bindingAdapter("isVisible")判断View的显示与否

单向数据绑定,其实就是刷新对应的实体或者属性,则刷新视图。但是视图的变化并不会更新实体或者对应的变量的值

实体或者变量刷新,会更新视图;而视图变化也会更新对应的实体或者变量

因为viewModel.username初始没有值,所以在刚进入页面的时候,会没有任何显示,那么可以使用default显示默认值

如果是直接写字符串,那么就是default=用户名这样的写法,不需要加眼号
也可以设置默认的visibility,比如:

数学 + - / * %

字符串连接 +

字符串拼接的用法,其实就是与正常拼接一样
逻辑 && ||
二进制 & | ^
一元运算 + - ! ~
三元运算 ?:
判断是否为空 ??(例:android:text="@ user.name ?? user.defaultName",相当于android:text="@ user.name !=null ? user.name : user.defaultName")
位运算 >> >>> <<

比较 == > < >= <=

instanceof
方法调用

方法的调用,采用@()->viewModel.login()的方式,类似于lambda表达式
前面的()表示参数
变量引用
获取数组、集合、Map的值 []

首先@BindingAdapter(value = ["flowAdapter"]),value是定义的一个类似于自定义View的属性,用于扩展View的属性
Java的方式:

Java的方式实现,第一个参数作为View,是定义扩展的View的。使用如下:

kotlin的方式:

kotlin的方式,使用的是函数扩展的方式,给对应的View扩展一个函数,依然使用@BindingAdapter注解定义对应的扩展属性
使用与Java方式一样

在kotlin中也可以传入一个lambda参数,其实与java中的接口实现类对象类似。

https://www.jianshu.com/p/bd9016418af2
这篇说的很全面

以上是关于Android-DataBinding使用的主要内容,如果未能解决你的问题,请参考以下文章

使用 android-databinding 方法格式化友好的日期

基于MVVM架构,结合阿里ARouter打造的一套Android-Databinding组件化开发方案

Android - DataBinding - 如何以及何时生成绑定类?

使用装饰器时如何在 VueJS 中使用 Data 对象? “预计 'this' 将由类方法 'data' 使用。”

R语言data.table导入数据实战:data.table使用dcast.data.table函数实现透视表(pivot table)

python中data无法define