我有一个Functions
列表,该列表是使用Room从本地SQLite数据库中检索的,我想观察该列表中的每个函数。目前,我正在执行以下操作:
public List<MutableLiveData<Function>> getLiveFunctions() {
if (liveFunctions == null) {
liveFunctions = new ArrayList<>();
for (Function function : functions) {
//Livedata with a default value on background thread (postValue)
liveFunctions.add(new DefaultLiveData<>(function, true));
}
}
return liveFunctions;
}
从数据库中本地获取后,我可以使用RPC请求到服务器的给定功能的状态。收到响应后,可以为该功能设置新值,并希望UI观察该功能的变化。
请澄清一下
: LiveData<List<Function>>>
和List<LiveData<Function>>
之间的区别在于,第一个只会观察列表中是否添加,更新或删除了对象,对吗?并不是LiveData<List<Function>>>
也在听他们物品的变化吗?
我正在使用MediatorLiveData
将观察者组合到“ FunctionObserver”。这是处理我所有函数回调的正确方法吗?
[代码]
MediatorLiveData<LiveData<Function>> mediator = new MediatorLiveData<>();
List<MutableLiveData<Function>> functions = //functions
for (LiveData<Function> function : functions) {
mediator.addSource(function, functionObserver);
}
mediator.observe(MainActivity.this, new Observer<LiveData<Function>>() {
@Override
public void onChanged(@Nullable LiveData<Function> functionLiveData) {
Log.i(TAG, "Live data change: ");
}
});
LiveData<List<Function>>>
,但是我的父类有一个@Relation
批注,而该批注的类型必须是List
或Set
(而不是LiveData)