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

问题描述 投票:0回答:1

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

android mvvm data-binding binding datamodel
1个回答
2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.