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的版本匹配