Databinding使用·記

韶華不爲少年留,恨悠悠,幾時休。

 

基礎用法:

1. gradle 配置支持dataBinding

//  gradle 支持dataBinding

android{

/.../

dataBinding {

        enabled = true;

}

}

2. 選中根目錄 alt+回車 生成對應格式,簡單的綁定。

3. 實現綁定:dataBean extends BaseObservable  配合notifyChange()和notifyPropertyChanged()[email protected]

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官方