首页 > 解决方案 > 另一个 LiveData Observer 中的 LiveData Observer

问题描述

我正在我的应用程序中使用一些搜索选项。它包括数据库中的两个连接表。我是新房间,我需要这样的东西:

viewModel.getAllImages().observe(getViewLifecycleOwner(), images -> {
    for (Image i : images) {
        viewModel.getAllMetadata(i.getId()).observe(getViewLifecycleOwner(), list -> {
            for(Metadata m: list){
                for (Metadata em : listMetadata) {
                    if (em.getId() == m.get() && em.getValue().equals(m.getValue())) {
                        imageList.add(i);
                    }
                }
            }
        });
    }
});

listMetadata是从用户输入中收集的。imageList是存储结果的地方。

单击按钮时调用此方法。它只有在我第二次点击它之后才起作用,但它给了我双重结果。第一次它只是说 imageList 是空的。第二次,有时它是双重填充的,有时只有一次,但它只适用于第二次点击。

我不知道这是否是使用 LiveData 的正确方法,并且我非常感谢如何做到这一点的相同帮助。

提前致谢。

标签: javaandroidandroid-roomandroid-livedataandroid-viewmodel

解决方案


推荐阅读