MediatorLiveData 的使用

1 基本使用

    val mediator = MediatorLiveData<List<String>>();
    val strLive = MutableLiveData<List<String>>();
     mediator.addSource(strLive, Observer {
            Log.i("ccccccccccc","onchange"+it.size);
            mediator.value = it.filter {
                it.length>4
            }
        })

activity 中的代码

     binding.btnGotoGarden.setOnClickListener{
            viewModel.strLive.value = arrayListOf("2","132123","1323123123","12312313123");
        };

     viewModel.mediator.observe(this, Observer {
            Log.i("ccccccccc","size==="+it.size)
        })

mediator 必须注册 不然 onchange 方法不会回调
mediator addSource 方法用来监听strLive 的变化 strLive 变化 会回调onchange方法
给 mediator.value 赋值 会回调activity中的注册

2 可以用来合并多个数据源

// 数据库来的结果
private val dbLiveData = StateLiveData<List<WxArticleBean>>()
// api网络请求的结果
private val apiLiveData = StateLiveData<List<WxArticleBean>>()
// 将上面两个结果进行合并,只有有一个更新,mediatorLiveDataLiveData就会收到
val mediatorLiveDataLiveData = MediatorLiveData<ApiResponse<List<WxArticleBean>>>().apply {
    this.addSource(apiLiveData) {
        this.value = it
    }
    this.addSource(dbLiveData) {
        this.value = it
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容