簡體   English   中英

Firebase:datasnapshot.getValue(className)什么都不返回

[英]Firebase: datasnapshot.getValue(className) returning nothing

我試圖使用模型類獲取數據但是徒勞無功。 有很多問題已經被問過,但我想我是按照他們的說法,如果我遺失了什么,請讓我知道..

我想獲取類似這樣的數據..

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

但它沒有從數據庫中獲取數據。

數據庫:

數據庫

房間模型

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中沒有錯誤也沒有,

我試圖從空字符串中獲取數據是我的愚蠢。 我至少期待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) {

        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM