我試圖通過按鍵排序嵌套子元素來獲取Firebase的根。我的數據結構是這樣的:嵌套子元素中的Firebase orderbykey
"-Ka3rbdLvH0I8X1Lg4of" : {
"menus" : {
"-KaD6U8_n5CPbRmAhgM2" : {
"menuItems" : {
"-KaD6UEoDvrm1W1a55AR" : {
"name" : "Annemin Kahvaltısı"
},
"-KaD6UKf0DyPja-Rni0X" : {
"name" : "Sıcak Kahvaltı",
},
"-KaD6UQyrJ1p5Ok9oya4" : {
"name" : "Anadolu Kahvaltısı",
},
"name" : "Sahanda Ürünler"
},
"-KaD6VgvHIj37Qyrirw1" : {
"menuItems" : {
"-KaD6Von-sz1xqPLeI5I" : {
"name" : "Sade Omlet",
},
"-KaD6Vvg0cOBFuABbtuU" : {
"name" : "Mantarlı Omlet",
},
"name" : "Omletler"
},
我有一個restaurant -> menus -> menuItems
。 A restaurant
可以有多個menus
和menus
可以有多個menuitems
。他們插入了特定的Firebase密鑰。代碼,我得到的數據爲
mDatabase.child("restaurants").child(lastResIdFirebaseKey).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
currentRest = snapshot.getValue(Restaurant.class);
tv_resName.setText(currentRest.getName());
tv_resDesc.setText(currentRest.getAddress());
iv_resImage.setImageResource(R.drawable.default_restaurant);
}
@Override
public void onCancelled(DatabaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
在我的java類實現;我正在將子節點映射到hasmap中;
public HashMap<String,Menu> menus;
的餐廳類
public class Restaurant {
private String name;
private String description;
public HashMap<String,Menu> menus;
public Restaurant() {}
public Restaurant(String name, String descriptioArrayList<Menu> menus)
{
this.name = name;
this.description = description;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public HashMap<String, Menu> getMenus() {
return menus;
}
public void setMenus(HashMap<String, Menu> menus) {
this.menus = menus;
}
}
一切正常,我成功地獲得restaurant
根和其映射到類。但是,menu
和menuitems
的順序與從Firebase插入的順序不同。
我檢查了數據快照,它們是從Firebase無序發出的。我知道或getChildren()
獲取插入訂單的數據,但我正在嘗試爲訂單兒童menus
和menuitems
。
綜上所述,我想得到整個restaurant
根,它的menus
和menuitems
我插入它們的順序。我只想通過獲取restaurant
root來執行此操作。有沒有辦法做到這一點?謝謝。
編輯:添加了上傳的數據的Restaurant.class和JSON版本。
請考慮上載導出的JSON數據,而不是數據庫的屏幕截圖。你實現'Restaurant.class'也會有幫助。 – hotrod
我認爲這種方式更直觀易懂。但我會編輯這個問題。 – starrystar
只有在沒有**其他方式解釋你的意思時才應該上傳圖片。我指的是這個問題及其答案:http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-問題 – hotrod