美文网首页
MutableLiveData 自动更新

MutableLiveData 自动更新

作者: 炫子_260f | 来源:发表于2022-06-15 10:01 被阅读0次

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

    相关文章

      网友评论

          本文标题:MutableLiveData 自动更新

          本文链接:https://www.haomeiwen.com/subject/aqxxvrtx.html