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