(новичок в программировании на Android)
У меня есть RecyclerView
подкатегорий и соответствующих им ключевых слов.
вот так:
https://imgur.com/a/bEFS6cm
Подкатегории выбираются путем наблюдения
subcategoryViewModel.getAllSubcategoriesForCategory(id).observe...
(я использую Room), здесь у меня есть идентификатор (известно, какая категория выбрана во время создания фрагмента подкатегории).
Однако у меня проблемы с вычислением соответствующих ключевых слов. Ключевые слова - это названия статей, содержащихся в каждой подкатегории.
В моем ArticleDao
у меня есть функция
LiveData<List<String>> getAllArticleNamesById(int subId);
Так что логично, мне просто нужно получить текущий список подкатегорий и получить соответствующие им ключевые слова в цикле for.
Но как мне это сделать, если список подкатегорий и список ключевых слов LiveData
и я не могу получить доступ к их значениям, могут только их наблюдатели?
Я пытался поместить наблюдателя в наблюдателя, но я не думаю, что это лучшая идея.
subcategoryViewModel.getAllSubcategoriesForCategory(id).observe(getViewLifecycleOwner(),
new Observer<List<Subcategory>>() {
@Override
public void onChanged(List<Subcategory> subcategories) {
recyclerAdapter.setSubcategories(subcategories);
for (Subcategory sub : subcategories) {
articleViewModel.getAllArticleNamesById(sub.getId()).observe(getViewLifecycleOwner(),
new Observer<List<String>>() {
@Override
public void onChanged(List<String> strings) {
recyclerAdapter.addToKeywordsList(keywordsIntoString(strings));
}
});
}
});
Я нашел некоторую информацию о LiveData
Преобразованиях (map, switchmap), но на самом деле это не относится к моей проблеме, так как предполагалось применить функцию к LiveData
при изменении других LiveData
. (по крайней мере из того, что я понимаю). Мне просто нужно получить доступ к текущему списку подкатегорий и работать со значениями, чтобы я мог наблюдать за названиями статей.
В идеале мне нужно что-то вроде этого:
for (Subcategory sub : subcategoryList) {
articleViewModel.getAllArticleNamesById(sub.getId()).observe...
}
Итак, мой вопрос: как мне получить доступ к подкатегориям, которые я уже наблюдаю? Я что-то упустил?