一、实体类bean继承BaseObservable,获得了通知UI的能力。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| private class User extends BaseObservable { private String firstName; private String lastName; @Bindable public String getFirstName() { return this.firstName; } @Bindable public String getFirstName() { return this.lastName; } public void setFirstName(String firstName) { this.firstName = firstName; notifyPropertyChanged(BR.firstName); } public void setLastName(String lastName) { this.lastName = lastName; notifyPropertyChanged(BR.lastName); } }
|
Bindable标签在编译时会自动生成BR类,当Model中数据发生改变的时候,通过Set方法调用notifyPropertyChanged的,通知对象的某个字段数据已经更新。
在UI里,通过实体化的对象添加BaseObservable的addOnPropertyChangedCallBack方法:
Adds a callback to listen for changes to the Observable.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| user.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { @Override public void onPropertyChanged(final Observable observable, final int i) { //TODO runOnUiThread(new Runnable() { @Override public void run() { switch (i) { case BR.firstName: break; case BR.lastName: break; default: break; } } }); } });
|