Firebase: datasnapshot.getValue (className) ничего не возвращает - PullRequest
0 голосов
/ 18 июня 2019

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

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

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) {
        }
    });

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

База данных:

Database

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

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 нет ошибок и ничего нет,

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Я думаю, что проблема с вашим кодом заключается в том, что вы не устанавливаете извлеченные данные в список или в представление переработчика (что-либо, что вы используете для отображения данных), и если это не помогает, попробуйте установить прослушиватель событий 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) {

        }
    });
0 голосов
/ 18 июня 2019

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

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