我正在使用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;
}
有没有办法检索俱乐部清单? 预先感谢。
答案 0 :(得分:0)
查看您的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) {
}
});
提示: 不要从函数中返回这样的列表,因为这些调用是异步发生的,因此每次您都有很大的机会获得空列表,请使用侦听器: How to create our own Listener interface in android?