1、启用dataBinding
//在module的build.gradle中
apply plugin: 'kotlin-kapt'//必须
android{
//AS 4.0 以下,
dataBinding{
enabled true
}
//AS 4.1之后
bindingFeature{
dataBinding = true
// for view binding :
// viewBinding = true
}
}
2、UI改造
3、viewBinding和dataBinding
4、xml中的数据类型
variable声明变量;import导入类型;对于xml的特殊符号需要转义类似&
绑定xml与data格式:@{}、@={}(双向绑定)
-
可用表达式、函数调用、属性参数
-
??判空 -
?:三目运算符 -
@string/str_name资源引用,可用占位符format -
+拼接字符,使用``反引号 -
default设置默认值 -
include绑定 -
点击事件
onclick="@{()->vm.click()}"
onclick="@{(v)->vm.click(v)}"
onclick="@{()->vm.click(context)}"
onclick="@{BindHelp::staticClick}"
onclick="@{callback}"
-
EditText的双向绑定text="@={etStr}" -
UI中关联xml的dataBinding
//activity中
val binding =
DataBindingUtil.setContentView(this, R.layout.activity_base_use)
//fragment中 xxxBinding.inflater()
二、进阶用法
-
android:onCheckedChanged="@{(switch,checked)->vm.broadcast(checked)}" -
Binding 响应
UI的data Bean -
Adapter用于列表的适配器,include -
@BindingConversion转化支持 -
@BindingAdapter高级支持 -
@InverseBindingAdapter反相绑定-
@bindingadapter(xxx)
-
@bindingadapter(xxxAttrChanged)
-
@inverseBindingadapter
-
-
@BindingMethods适配扩展支持binding的函数
-
TextView的text属性,有其注意data不能为Number类型 -
xml中字符不能为中文 -
反射属性、函数必须是
public -
使用
liveData作为dataBinding的时候,切记ui中设置binding.lifecycleOwner -
observableField数据的时候,某些场合需要必须初始化,否则运行报错,不易排查 -
IDE开发避免中文输入法引起字符飞崩,尤其xml中。 -
./gradlew app:build,./gradlew app:dependencies等gradle的指令常用,便于排错--stacktrace --debug等参数必要信息,使用Execution failed for task构建错误信息。 -
clean,rebuild,clear cache,delete build和apk文件夹 -
build.gradle,--offline,AS&gradle的版本匹配
