我必须使用LiveData返回列表列表。 背景是,我从Room数据库中加载了一些数据。 数据库调用取决于计数器。所以我尝试了以下方法:
MediatorLiveData<List<List<Foo>> forView = new MediatorLiveData<>();
forView.addSource(counter, (trigger) -> {
List<List<Foo>> output = new LinkedList<>();
for(int i = 0; i < counter; i++) {
output.add(new ArrayList<>());
forView.addSource(repository.getDataForCounter(i), (data) -> {
//With some workaround I thought I've access to the position
output.remove("i");
output.add("i", data);
});
}
return output;
});
我认为索引的解决方法不起作用,因为lambda中的变量必须是隐式的final。 还有其他方法可以将从数据库中取出的可变数量的列表“合并”到此类列表的一个列表中?