Я хотел бы получить объект, который я хранил на базе огня с помощью асинхронной задачи.я передаю объект массива-список, который заполнит пользовательский интерфейс с адаптером, массив-список строк, книг, которые я хочу получить, и адаптер, который я хотел бы обновить пользовательский интерфейс, но я застрял с асинхронным в асинхронноми я не уверен, что делать.поскольку вызовы firebase для извлечения данных выполняются после выполнения асинхронной записи.
Я хотел бы вызвать это с помощью
new FetchBookWithList(bookList,bookIdList,adapter).execute()
некоторого моего кода:
protected ArrayList<Book> doInBackground(String... strings) {
try{
DatabaseReference bookReference = FirebaseDatabase.getInstance().getReference().child("books");
bookReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()) {
try {
for (DataSnapshot books : dataSnapshot.getChildren()) {
if(bookListID.contains(books.child("bookID").getValue())) {
Book book = books.getValue(Book.class);
bookList.add(book);
}
}
} catch (Exception e){
e.printStackTrace();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.w("testing","Error: ", databaseError.toException());
}
});
} catch (Exception e) {
e.printStackTrace();
}
return bookList;
}
@Override
protected void onPostExecute(ArrayList<Book> s){
super.onPostExecute(s);
try {
if(this.bookAdapter != null) {
this.bookAdapter.notifyDataSetChanged();
}
} catch (Exception e){
e.printStackTrace();
}
}
мой полный код класса: https://www.codepile.net/pile/YKYMXMK7