MutableLiveData 自动更新

今天在使用MutableLiveData的时候,遇到一个问题,用暂时的解决方法,先记录下来
WxStateBean

public class WxStateBean{
    private String code;

    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
}

ViewModel 中 定义:

MutableLiveData> wxStateBeans = new MutableLiveData<>();

设置观察:

        viewModel.getWxStateBeans().observe(this, new Observer>() {
            @Override
            public void onChanged(List 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();都应该没有必要调用。
但是不调用的话,又不更新。


2022-08-24 更新
参考:Android开发 LiveData与MutableLiveData详解 - 观心静 - 博客园 (cnblogs.com)

你可能感兴趣的:(MutableLiveData 自动更新)