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
}