У меня есть List<String>
имен, относящихся к документам, которые я хочу получить из FireStore.Я хочу получить доступ к содержимому после завершения загрузки, поэтому я реализовал OnCompleteListener
в Fragment
, который использует данные.Однако я не уверен, как запустить цикл внутри Task
, чтобы запросить FireStore для каждого документа.Я запрашиваю FireStore в классе Repository, который возвращает объект Task
через мой ViewModel
и, наконец, в мой Fragment
.Я хочу, чтобы репозиторий возвращал Task
, чтобы я мог прикрепить к нему OnCompleteListener
, чтобы знать, когда я закончу загружать свои данные.
Мой репозиторий Query
метод:
public Task<List<GroupBase>> getGroups(List<String> myGroupTags){
final List<GroupBase> myGroups = new ArrayList<>();
for(String groupTag : myGroupTags){
groupCollection.document(groupTag).get()
.addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if(task.isSuccessful()){
myGroups.add(task.getResult().toObject(GroupBase.class));
}
}
});
}
return null; //Ignore this for now.
}
Я знаю, что это не вернет то, что мне нужно, но я не уверен, как структурировать Task
, который включает в себя цикл внутри него.Нужно ли мне извлекать содержимое List<String>
в моем Fragment
и запускать отдельные запросы для каждого элемента?
Будем весьма благодарны за любые предложения.