databinding學習(3)

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() {

繼承

相關文章
相關標籤/搜索