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

继承

相关文章
相关标签/搜索