将可变数量的源添加到MediatorLiveData

时间:2019-01-25 16:23:37

标签: android android-livedata

我必须使用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。 还有其他方法可以将从数据库中取出的可变数量的列表“合并”到此类列表的一个列表中?

0 个答案:

没有答案