Java / Android - Ошибка загрузки ArrayList как объекта из Firebase - PullRequest
0 голосов
/ 04 марта 2019

Я уже некоторое время пытаюсь решить эту проблему с загрузочным массивом Firebase, но не знаю, как ее решить.

Класс объекта

public class Book {
    private String title;
    private String author;
    private String ISBN;
    private String photo;
    private String ownerEmail;
    private String ownerID;
    private String BookID;
    private Date returnDate;
    private Status status;
    private String borrowerID;

    public Book(){}
    public Book(String title, String author, String ISBN, String photo, String ownerEmail, String ownerID) {
        this.title = title;
        this.author = author;
        this.ISBN = ISBN;
        this.photo = photo;
        this.ownerEmail = ownerEmail;
        this.ownerID = ownerID;
        this.status = Status.Available;
        if(this.BookID == null || this.BookID.isEmpty())
            this.BookID = UUID.randomUUID().toString();
    }
    public enum Status{
        Available,
        Requested,
        Accepted,
        Borrowed
    }

У меня естьgetter и setter для всех переменных, и я загружаю эту информацию из firebase, используя код:

 public void loadMyBookFromFirebase(){
        final ArrayList<Book> bookList = new ArrayList<>();

        DatabaseReference userReference = FirebaseDatabase.getInstance().getReference().child("users").child(this.userID).child("myBooks");
        userReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Log.d("testing","books" + dataSnapshot.toString());
                if(dataSnapshot.exists()) {
                    try {
                        for (DataSnapshot books : dataSnapshot.getChildren()) {
                            Book book = dataSnapshot.getValue(Book.class);
                            Log.d("testing","books" + book.getAuthor());
                            //load book into ListView
                        }
                    } catch (Exception e){
                        e.printStackTrace();
                    }
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Log.w("testing","Error: ", databaseError.toException());
            }
        });
    }

это моя база данных firebase база данных firebase я продолжаю получать Не могу преобразовать объект типа java.util.ArrayList в тип com.example.cmput301w19t15.Book

ошибка в строке Book book = dataSnapshot.getValue(Book.class); я не уверен, почему я получаю объект преобразованияошибка, я не хочу искать отдельные переменные и устанавливать их, которые противоречат назначению класса объекта

Мне бы очень хотелось получить представление об этом

1 Ответ

0 голосов
/ 04 марта 2019

Чтобы решить эту проблему, измените следующую строку кода:

Book book = dataSnapshot.getValue(Book.class);

на

Book book = books.getValue(Book.class);

Вам необходимо получать данные из объекта books, а не изdataSnapshot объект.

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