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
}
}