韶华不为少年留,恨悠悠,几时休。
基础用法:
1. gradle 配置支持dataBinding
// gradle 支持dataBinding
android{
/.../
dataBinding {
enabled = true;
}
}
2. 选中根目录 alt+回车 生成对应格式,简单的绑定。
3. 实现绑定:dataBean extends BaseObservable 配合notifyChange()和notifyPropertyChanged()+@Bindable
3.实现绑定:ObservableField等一系列封装类,包装监听的属性。
4.绑定数据
了解Databingdind的注解s.
@Bindable 数据 -> 界面 getter()方法
@BindingAdapter xml-tag -> 方法 static扩展方法 (判断死循环)
@BindingConversion 类型转换 static 1个参数 最后一个生效
@BindingMethod 配合@BindingMethods使用(控件,属性,方法)
@BindingMethods xml-tag -> View方法(自定义View)(判断死循环)
@InverseBindingAdapter 逆向 static getter 忽略原同名方法 双向原理
@InverseBindingMethod 逆向 view->data 配合@BindingMethods使用(控件,属性,方法, 事件)
@InverseBindingMethods 逆向 容器 双向原理
@InverseMethod 逆向 view->data 任意转换 static 成对方法
一个小细节。
通过查看apt生成的ActAddDataBinding可以知道。执行绑定executeBindings方法在onAttachedToWindos()后面,自然也就在oncreate()、onResume()后面。所以会出现上面的问题:单项绑定数据后 oncreate()里面更改数据仍然生效,onAttachedToWindos()后,通过操作改动mTask却又不会生效了。
官方的文档:databingding文档
官方Demo: github:todo-databind官方