韶華不爲少年留,恨悠悠,幾時休。
1. gradle 配置支持dataBinding
// gradle 支持dataBinding
android{
/.../
dataBinding {
enabled = true;
}
}
2. 選中根目錄 alt+回車 生成對應格式,簡單的綁定。
3. 實現綁定:dataBean extends BaseObservable 配合notifyChange()和notifyPropertyChanged()[email protected]
3.實現綁定:ObservableField等一系列封裝類,包裝監聽的屬性。
4.綁定數據
@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卻又不會生效了。