キーで順序付けられたネストされた子を持つ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
です。 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クラスの実装では、私は子ノードをマップするようにマップしています。
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から来ています。私はまたはgetChildren()
が挿入された順序でデータを取得することを知っていますが、私は子の両方のためにしようとしていますmenus
とmenuitems
。
まとめて、menus
とmenuitems
を私が挿入した順番で全部restaurant
としたいと思います。私はこれを行うには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