Firebase: datasnapshot.getValue(className) ничего не возвращает

Я пытаюсь получить данные, используя класс модели, но тщетно. Уже было задано так много вопросов, но я думаю, что я в соответствии с ними, если я что-то упустил, пожалуйста, дайте мне знать.

Я пытаюсь получить данные примерно так.

FirebaseHelper.firebaseDatabase().getReference().child("rooms").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot roomSnap : dataSnapshot.getChildren()) {
                Room room = roomSnap.getValue(Room.class);

                //no response
                Log.d("createdAt", room.createdAt);

                // returns all data in roomSnap
                Log.d("roomSnap", roomSnap.toString());

            }
        }
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
        }
    });

Но он не извлекает данные из базы данных.

База данных:

Firebase: datasnapshot.getValue(className) ничего не возвращает

Модель комнаты

public class Room implements Parcelable {

    private static final String TAG = "Room";


    public Room() {

    }

    public String objectID = "";
    public String createdAt = "";
    public String updatedAt = "";
    public String ACL = "";
    public String roomNumber = "";
    public String roomStatus = "";
    public String roomGuestFirstName = "";
    public String roomGuestLastName = "";
    public String guestArrival = "";
    public String guestDepature = "";

    protected Room(Parcel in) {
        objectID = in.readString();
        createdAt = in.readString();
        updatedAt = in.readString();
        ACL = in.readString();
        roomNumber = in.readString();
        roomStatus = in.readString();
        roomGuestFirstName = in.readString();
        roomGuestLastName = in.readString();
        guestArrival = in.readString();
        guestDepature = in.readString();
    }

    public static final Creator<Room> CREATOR = new Creator<Room>() {
        @Override
        public Room createFromParcel(Parcel in) {
            return new Room(in);
        }

        @Override
        public Room[] newArray(int size) {
            return new Room[size];
        }
    };

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(objectID);
        dest.writeString(createdAt);
        dest.writeString(updatedAt);
        dest.writeString(ACL);
        dest.writeString(roomNumber);
        dest.writeString(roomStatus);
        dest.writeString(roomGuestFirstName);
        dest.writeString(roomGuestLastName);
        dest.writeString(guestArrival);
        dest.writeString(guestDepature);
    }
}

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

0
0
61
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Это была моя глупость, я пытался получить данные из пустой строки. Я ожидал, по крайней мере, имя тега Log-cat, однако я решил это, просто добавив данные в значение, подобное этому...

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

 DatabaseReference ref = database.getReference().child("buddy_plans");
    ref.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            Buddy buddy = dataSnapshot.getValue(Buddy.class);
            listBuddy.add(buddy);
            buddyAdapter.notifyDataSetChanged();

        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

Другие вопросы по теме