簡體   English   中英

從Firebase檢索多個數據,返回null

[英]Retrieving multiple data from firebase returning null

我正在使用Firebase數據庫在Android應用程序中存儲和讀取“俱樂部”列表。 下面是Json的表示形式。

{
  "clubs" : [ {
    "id" : 1,
    "image" : {
      "allocationByteCount" : 589824,
      "byteCount" : 589824,
      "config" : "ARGB_8888",
      "density" : 320,
      "generationId" : 212,
      "height" : 384,
      "mutable" : false,
      "premultiplied" : true,
      "recycled" : false,
      "rowBytes" : 1536,
      "width" : 384
    },
    "name" : "Axis"
  }, {
    "id" : 2,
    "image" : {
      "allocationByteCount" : 589824,
      "byteCount" : 589824,
      "config" : "ARGB_8888",
      "density" : 320,
      "generationId" : 214,
      "height" : 384,
      "mutable" : false,
      "premultiplied" : true,
      "recycled" : false,
      "rowBytes" : 1536,
      "width" : 384
    },
    "name" : "Allies"
  }, {
    "id" : 3,
    "image" : {
      "allocationByteCount" : 589824,
      "byteCount" : 589824,
      "config" : "ARGB_8888",
      "density" : 320,
      "generationId" : 216,
      "height" : 384,
      "mutable" : false,
      "premultiplied" : true,
      "recycled" : false,
      "rowBytes" : 1536,
      "width" : 384
    },
    "name" : "Neutrals"
  } ]
}

我正在使用FirebaseAdapter類在Firebase數據庫上調用方法。 但是在嘗試獲得所有俱樂部時返回null。

波紋管有調用它的方法:

public List<BDClub> getClubs() {

        list.clear();

        database.getReference("clubs").addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists()){
                    System.out.println(dataSnapshot.getChildrenCount());
                    for(DataSnapshot array : dataSnapshot.getChildren()){
                        clubs = array.getValue(BDClub[].class);
                        for(BDClub c : clubs){
                            list.add(c);
                        }
                    }
                }
            }

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

            }

        });

        return list;
    }

有沒有辦法檢索俱樂部清單? 提前致謝。

查看您的Json表示形式,我認為clubs是主要數據庫參考中的子級,因此您可以嘗試以下操作:

FirebaseDatabase.getInstance().getReference().child("clubs").addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists()){
                    System.out.println(dataSnapshot.getChildrenCount());
                    for(DataSnapshot array : dataSnapshot.getChildren()){
                        clubs = array.getValue(BDClub[].class);
                        for(BDClub c : clubs){
                            list.add(c);
                        }
                    }
                }
            }

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

            }

        }); 

提示:不要從函數中返回這樣的列表,因為這些調用是異步發生的,因此每次您都有很大的機會獲得空列表。使用監聽器: 如何在android中創建我們自己的監聽器接口?

暫無
暫無

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

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