MutableLiveData 自动更新

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


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容