MutableLiveData 自动更新

2022-06-15  本文已影响0人  炫子_260f

今天在使用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();都应该没有必要调用。
但是不调用的话,又不更新。

上一篇下一篇

猜你喜欢

热点阅读