2017-08-23 16 views
0

アンドロイドでfirebaseリアルタイムデータベースからデータを取得しようとしています。私はjsonデータファイルを作成し、firebaseデータベースにjsonファイルをインポートしました。データファイルは次のようになります。アンドロイドでfirebaseリアルタイムデータベースからデータを取得

{ 
    "data": [ 
     { 
     "name" : "one", 
     "age" : "ten" 
     },{ 
     "name" : "two", 
     "age" : "twenty" 
     } 
    ] 
} 

私はPOJOクラスを作成しました。では、配列からすべてのjsonオブジェクトを取得するにはどうすればよいですか?私はしばらく検索しましたが、参照番号&の子どもはここでは理解できません。

答えて

1

は、私は次のようにあなたのFirebase構造を変え推薦するアクションが表示されます:

  • []を{}に置き換えると、Firebaseはこの練習を推奨します。
  • add dataノードにあるすべてのユーザー(またはアイテム)の固有の一意のIDです。

は、この例を見てみましょう:

enter image description here

を使用すると、すべてのユーザーが特定のIDを持っている絵で見ることができるように。 Firebaseはすべてのユーザに対して、String userId= user.getUid();で取得できる一意のIDを提供します。

あなたがaswell固有のIDを作成し、String key = Database.child("users").push().getKey();を使用してそれらを得ることができ、あなたが構造化された私はthisを読むことをお勧めしますデータを読みたい場合は

(ユーザIDに使用することをお勧めしません)。

thisも読んでください。

+0

ありがとう!しかし、ひとつは、「[]」を「{}」に置き換えると、それは有効なjsonになりますか?この場合、https://jsonlint.com/にエラーが表示されます。 –

+0

私が言ったように、firebaseデータベースを構築するときは、[]の代わりに{}を使用することをお勧めします。 jsonプロバイダから構造体をインポートすることを選択した場合、記述したようにエラーが発生する可能性があります。データベース構造をインポートする必要がありますか?そうでない場合、特定のキーと子を持つノードをそれらのノードに追加することで、Android Studioから構造を作成できます(マッピングと呼ばれます) –

1

val fireDataBaseRef FirebaseDatabase.getInstance().reference.child("data")と言ったら、ルートツリーの参照を保持しています。この参照して、あなたはfireDataBaseRef.addChildEventListener(childEventListener)

val childEventListener: ChildEventListener = object : ChildEventListener { 

     override fun onCancelled(snapshot: DatabaseError?) {} 

     override fun onChildMoved(snapshot: DataSnapshot?, p1: String?) {} 

     override fun onChildChanged(snapshot: DataSnapshot?, p1: String?) { 

     } 

     override fun onChildAdded(snapshot: DataSnapshot?, p1: String?) { 
      // childs added 
     } 

     override fun onChildRemoved(snapshot: DataSnapshot?) { 

     } 
    } 

だけオーバーライド機能にいくつかのログを置くことができる場所、あなたが

+0

ありがとうございました!あなたの答えから参照点を得ました。 –

関連する問題