gpt4 book ai didi

android - 如何在 setModel 之后使用 DataBinding 使对模型所做的更改生效?

转载 作者:行者123 更新时间:2023-12-03 11:02:41 26 4
gpt4 key购买 nike

DataBinding:如何确保由于数据模型的修改而相应地更新 View ?
例如:

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”已被修改,但 View 未更新;我错过了什么?

最佳答案

阅读文档我找到了一个解决方案,首先:
任何普通的旧 Java 对象 (POJO) 都可以用于数据绑定(bind),但修改 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

关于android - 如何在 setModel 之后使用 DataBinding 使对模型所做的更改生效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49066097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com