android - android,observer 同时有两个不同的可变实时数据
问题描述
我想一次观察两个不同的可变实时数据。有什么办法可以在 android 中实现这一点,这两个数据也都存在于不同的 ViewModel 中。
解决方案
您可以使用MediatorLiveData将两个实时数据源合并为一个。这是一个快速示例,它将来自两个单独视图模型的 livedata1 和 livedata2 组合成一个 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
}
推荐阅读
- sql - Oracle SQL - Set null on repeating values
- javascript - Javascript OOP - 抽象(例如询问)、封装(将属性/方法组合在一起或保持状态私有?)、多态性
- r - R_使用apply函数时提取正在使用的元素的行列
- android-studio - Xamarin Android - 更改 Android 设备中的 DisplaySize 设置
- javascript - 反应状态数组索引不可能
- c++ - 将`boost::tuple`转换为`boost::fusion::tuple`
- php - PHP如何将\n转换为换行符
- c# - Visual Studio,无法保存到 USB 闪存驱动器
- .net - Powershell 4 中重载的方法解析错误
- swift - 我可以在我的 swift 服务器上获取我所有的 fireBase 用户 ID 吗?