LiveData Observer внутри другого LiveData Observer - PullRequest
1 голос
/ 08 мая 2020

Я работаю над поиском в моем приложении. И он включает в себя две связанные таблицы в базе данных. Я новичок в комнате, и мне нужно что-то вроде этого:

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, и я бы очень признателен за такую ​​же помощь, как сделать это.

Заранее спасибо.

...