文档(https://developer.android.com/reference/androidx/lifecycle/MediatorLiveData)谈论合并数据......但功能显然是设置它。
当我考虑“合并”时,我会想到诸如 .add() 或 .put() 或 .set(X x, Y y),.. 之类的东西,我可以将 2 个对象捆绑在一个中,或者一个列表对象或对象数组。
但是函数说.setValue(),文档说合并
日志给我的印象是前 2 个 setValue() 被完全忽略:
所以不是:
ViewModel: onChnaged: [Folder1, Folder2, Folder3]
Fragment: onChanged: Folder1 ...etc
ViewModel: onChanged: []
Fragment: onChanged:
ViewModel: onChanged: [Quantity1, Quantity2, Quantity3]
Fragment: onChanged: Quantity1 ...etc
只有第一个 .setValue(folders) 显示在 Fragment 上,我猜这只是因为它在 3 个要解决的查询中花费的时间最长。
……
因此,如果我对合并的概念有误,我需要在其中使用 Diff.Util 执行 LiveData/MutableLiveData<List<?>> 来管理传入列表或单个对象以及处理异步时间的信号量( ?也许?)..和一个 .add() 和 .replace() 函数相应地,等等...,但是我可以使用任何 LiveData,而不是 MediatorLiveData<>。
有什么我可以用的吗?
我错过了什么?
最糟糕的是,如果 MediatorLiveData 像我认为的那样做,那么在正确处理其生命周期的同时将多个 LiveData 连接到单个观察者真的不难......重点是什么。
我看到一些使用 .combine(data1, data2) 的 Kotlin 示例,但该函数甚至不存在。