DataBinding:如何确保通过修改数据模型相应地更新视图?例如:
public class MyActivity extends AppCompatActivity {
private MyActivityBinding mBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.my_activity);
mBinding.setMyModel(new MyModel());
}
public void onClickAnItem(View view) {
MyModel model = mBinding.getMyModel();
model.setField1 = "Jhon";
model.setField2 = "Dho";
mBinding.executePendingBindings();
}
}
在这种情况下,模型“MyModel”已被修改,但视图未更新;我错过了什么?
阅读文档我发现了一个解决方案,首先:任何普通的旧Java对象(POJO)都可以用于数据绑定,但修改POJO不会导致UI更新!为了让MyModel数据对象能够在数据发生变化时通知我进行了这些修改:
private class MyModel extends BaseObservable {
private String field1;
private String field2;
@Bindable
public String getField1() {
return this.field1;
}
@Bindable
public String getField2() {
return this.field2;
}
public void setField1(String firstName) {
this.field1 = firstName;
notifyPropertyChanged(BR.field1);
}
public void setField2(String lastName) {
this.field2 = lastName;
notifyPropertyChanged(BR.field2);
}
}
我希望这可以帮助别人Documentation here