android,同时观察两个不同的可变实时数据
android, observer two different mutable live data at once
我想同时观察两个不同的可变实时数据。我有什么办法可以在 android 中实现这个目标吗?
这两个数据也存在于不同的 ViewModel 中。
您可以使用 MediatorLiveData 将两个实时数据源合并为一个。下面是一个简单的示例,它将来自两个单独视图模型的 livedata1 和 livedata2 合并到一个 MediatorLiveData 中,它发出一个数据 class,其中包含 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
}
我想同时观察两个不同的可变实时数据。我有什么办法可以在 android 中实现这个目标吗? 这两个数据也存在于不同的 ViewModel 中。
您可以使用 MediatorLiveData 将两个实时数据源合并为一个。下面是一个简单的示例,它将来自两个单独视图模型的 livedata1 和 livedata2 合并到一个 MediatorLiveData 中,它发出一个数据 class,其中包含 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
}