Я пытаюсь получить корень 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 like;
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.
Я проверил datasnapshot, они поступают из Firebase неупорядоченными. Я знаю, что orderbykey()
или getChildren()
получает данные с вставленным заказом, но я пытаюсь сделать для заказа как детей menus
, так и menuitems
.
Подводя итог, я хочу получить полный корень restaurant
, его menus
и menuitems
заказ, который я их вставил. Я хочу сделать это, только получив корень restaurant
. Есть ли способ сделать это? Спасибо.
EDIT: добавлена версия загруженного файла 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