android databinding目前暫不支持雙向綁定 可是提供了 Observable Binding 來獲得相似的效果java
(1)繼承 BaseObservableandroid
public class ObservableUser extends BaseObservable{ private String firstName; private String lastName; @Bindable public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; notifyPropertyChanged(BR.firstName); } @Bindable public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; notifyPropertyChanged(BR.lastName); } }
BR是變異階段生成的一個類 相似R.java 當你使用了 @Bindable去標記getter方法, BR中就會生成對應屬性的一個entry,你就能夠 BR.屬性佈局
在setter方法中使用 notifyPropertyChanged方法能夠通知系統BR.屬性 已經變化須要更新UIthis
(2)第二種雙向綁定的實現方式雙向綁定
public class PlainUser { public final ObservableField<String> firstName = new ObservableField<>(); public final ObservableField<String> lastName = new ObservableField<>(); public final ObservableInt age = new ObservableInt(); }
更新數據code
plainUser.firstName.set(++index +"");
(3) 神奇的 帶ID的View 若是你在佈局中對View設定了ID 那麼你只須要在代碼中 在binding對象中直接調用 同ID名的對象直接使用對象
binding.btnSet.setOnClickListener(new View.OnClickListener() {
繼承