今天在使用MutableLiveData
的时候,遇到一个问题,用暂时的解决方法,先记录下来
WxStateBean
类
public class WxStateBean{
private String code;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
ViewModel
中 定义:
MutableLiveData<List<WxStateBean>> wxStateBeans = new MutableLiveData<>();
设置观察:
viewModel.getWxStateBeans().observe(this, new Observer<List<WxStateBean>>() {
@Override
public void onChanged(List<WxStateBean> wxStateBeans) {
LogUtil.E(TAG, "onChanged() ---------"+wxStateBeans.get(0).getCode());
adapter.notifyDataSetChanged();
}
});
但是,调用更改,更新方法:
viewModel.getWxStateBeans().getValue().get(2).setCode("dfe4325235");
onChanged
不触发
也不修改ui。
解决方法:
修改WxStateBean
public class WxStateBean extends BaseObservable {
private String code;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
notifyChange();
}
}
能够直接修改ui,但是还是不触发onChanged
想问问有啥优雅的方式吗?
因为想要更新 RecycleView
,觉得 onChanged
中的 adapter.notifyDataSetChanged();
都应该没有必要调用。
但是不调用的话,又不更新。
网友评论