2

Firebase イメージ

したがって、上記のデータ構造では、値を取得したいと考えていますAprilia Caponord 1200(図でマーク)。(ルートノード)への Firebase 参照がApriliaあり、すべてのキーと値のペアのデータを取得できます。

これが私のコードです

@override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child : dataSnapshot.getChild()) {
    Map<?, ?> value = (Map<?, ?>) child.getValue();
    String bike_price = value.get("price").toString();
    String image_url = value.get("image_url").toString();
    }
}

明らかに、キーと値の関係を持つ子ノードのすべての値を取得できます。しかし、親ノードの名前を具体的に取得できません。Stringでは、親ノードの値を形式で取得するにはどうすればよいですか?

を出力するchild.getValue().toString()と、JSON 値が得られますが、JSON の解析には興味がありません。親ノードの値を取得する特定の方法はありますか?

{Aprilia Caponord 1200={image_url=____________, price=18.35}.. }
4

3 に答える 3

6

getKey()おそらく次のメソッドを探しているでしょうDataSnapshot:

    mFirebaseRef = new Firebase("https://yours.firebaseio.com");
    mFirebaseRef.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot child: dataSnapshot.getChildren()) {
                Log.i("MainActivity", child.getKey());
            }
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {
            Log.e("MainActivity", "onCancelled", firebaseError.toException());
        }
    });

ここで注意すべき点がいくつかあります。

  • 私が知っている方法がないため、getChild()コードをに変更しました。getChildren()getChild()
  • の使用を検討する必要addChildEventListenerがあります。これによりDataSnapshots、下位レベルのノードが得られます
  • 車の「ラッパー クラス」を作成すると、かなり簡単になります。Firebase SDK for Android は、JSON をそのクラスのインスタンスに自動的にアンラップします。この良い例については、 AndroidChat リポジトリを参照してください。
于 2015-06-05T15:57:04.830 に答える