Я создаю RecyclerView, в котором я беру некоторые данные из firebase в конструкторе, однако данные удаляются, как только метод onComplete
завершается.
я добавил всплывающее уведомление, чтобы получать отзывы о том, где удаляются данные.
конструктор RecyclerView:
public RecycleAdapter(Context context) {
this.context = context;
activityTasks =new ArrayList<>();
try {
task = Repository.getAllUserActivityTasks();
//this is the onComplete() method via lamda
task.addOnCompleteListener((OnCompleteListener<QuerySnapshot>) task -> {
if (task.isSuccessful()) {
for (DocumentSnapshot entry :
task.getResult().getDocuments())
activityTasks.add(entry.toObject(ActivityTask.class)); //adding data to ArrayList
}
Toast.makeText(context, "out: "+activityTasks.size(), Toast.LENGTH_SHORT).show(); //returning 3
});
} catch (Throwable throwable) {
throwable.printStackTrace();
}
Toast.makeText(context, "out: "+activityTasks.size(), Toast.LENGTH_SHORT).show(); //returning 0
}
метод getAllUserActivityTasks
в репозитории, где я получаю задачу:
public static Task<QuerySnapshot> getAllUserActivityTasks(){
Task task = getActivityTaskCollection()
.get()
.addOnSuccessListener(queryDocumentSnapshots -> Log.d("firestore", "getAllUserActivityTasks: success"))
.addOnFailureListener(e -> Log.d("firestore", "getAllUserActivityTasks: failure"));
return task;
}
я пытался вызвать onComplete
в onBindViewHolder
в RecyclerView, поэтому я получу данные о создании RecyclerView, но это не сработало.
из того, что я видел в Интернете, люди говорят, что использование onComplete
должно сохранить мои данные, но это не сработает для меня...
API Firebase является асинхронным. Поэтому, пожалуйста, проверьте дубликат, чтобы увидеть, как вы можете решить эту проблему, используя пользовательский обратный вызов или используя Kotlin Coroutines.