我是新來的。我無法從Firebase數據庫檢索數據。我想檢索每個類別的名稱和food_items
。如何從Android中的Firebase實時數據庫檢索數據?
MYDATABASE
{
"categories" : {
"category1" : {
"name" : "Babyfood"
},
"category2" : {
"name" : "Dairy"
},
"category3" : {
"food_items" : {
"item1" : true,
"item2" : true
},
"name" : "Fruits"
}
},
"food_items" : {
"item1" : {
"category" : "category3",
"name" : "Apple"
},
"item2" : {
"category" : "category3",
"name" : "Banana"
}
}
}
FoodCategory.java
public class FoodCategory implements Serializable{
String name;
FoodItem food_items;
public FoodCategory(){}
public FoodCategory(String name, FoodItem food_items) {
this.name = name;
this.food_items = food_items;
}
public FoodItem getFoodItems() {
return food_items;
}
public String getName() {
return name;
}
public FoodCategory(FoodCategory category){
this.name = category.getName();
this.food_items = category.getFoodItems();
}
}
FoodItem.java
public class FoodItem {
String name;
public FoodItem(FoodItem foodItem) {
this.name = foodItem.getName();
}
public String getName() {
return name;
}
}
這裏是我的用於檢索每個類別的數據代碼
mRootRef = FirebaseDatabase.getInstance().getReference();
mCategoryRef = mRootRef.child("categories");
mCategoryRef.addValueEventListener(new ValueEventListener() {
ArrayList<FoodCategory> values = new ArrayList<>();
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot: dataSnapshot.getChildren()){
FoodCategory c = snapshot.getValue(FoodCategory.class);
Log.d("Categories: ", c.name + " " + c.food_items);
values.add(c);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
它返回類別的姓名權價值,但空值food_items
。
每個類別包含類別的名稱和食品項目列表。例如,類別3包含「水果」作爲類別的名稱,並且食品項目列表是{蘋果,香蕉}(即Item1,來自food_items的項目2)。 food_categories的foodItems是FoodItems對象。我使用** HashMap food_items **但是,我仍然將food_items設置爲null。 –
user2970035
感謝您的解釋。這很有幫助。你能告訴我如何訪問像category1嵌套鍵(它可以是任何隨機鍵),我不知道,爲什麼我的構造函數沒有使用此代碼** snapshot.getValue(FoodCategory.class)**實例化。我必須用新操作員初始化它。 – user2970035
你必須知道你想得到什麼密鑰,即使它是隨機的。然後像這樣做'mRootRef.child(「categories/category1」)''。看看[本文檔](http://stackoverflow.com/documentation/firebase-database/9242/reading-data/28681/understanding-which-data-referenced-by-getreference#t=201702282214462701557) – koceeng