我想一次观察两个不同的可变实时数据。有什么办法可以在android中实现吗? 这两个数据也位于不同的ViewModel中。
答案 0 :(得分:2)
您可以使用MediatorLiveData将两个实时数据源合并为一个。这是一个简单的示例,将来自两个单独的视图模型的livedata1和livedata2组合到MediatorLiveData中,该MediatorLiveData发出一个数据类,其中包含livedata1和livedata2的结果。只要livedata1或livedata2发生更改,调解器都会被触发
data class CombinedResult(val firstData: DataType1, val secondData: DataType2)
private fun createLiveDataMediator() : LiveData<CombinedResult> {
val result = MediatorLiveData<CombinedResult>()
val firstLiveData = myViewModel.getLiveData1()
val secondLiveData = mySecondViewModel.getLiveData2()
result.addSource(firstLiveData) {
result.value = CombinedResult(firstLiveData.value, secondLiveData.value)
}
result.addSource(secondLiveData) {
result.value = CombinedResult(firstLiveData.value, secondLiveData.value)
}
return result
}