Получение записи из Firebase с AsyncTask? - PullRequest
0 голосов
/ 26 марта 2019

Я хотел бы получить объект, который я хранил на базе огня с помощью асинхронной задачи.я передаю объект массива-список, который заполнит пользовательский интерфейс с адаптером, массив-список строк, книг, которые я хочу получить, и адаптер, который я хотел бы обновить пользовательский интерфейс, но я застрял с асинхронным в асинхронноми я не уверен, что делать.поскольку вызовы 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...