2017-04-25 32 views
1

を数える私のFirebaseデータアンドロイドfirebase - 取得子供はここ

{ 
"ques": { 
"Chemistry": {}, 
"Countries": {}, 
"Film": {}, 
"Geography": {}, 
"General Knowledge": {}, 
"Information Technology": {}, 
"Physics": {}, 
"Sports": {}, 
"Technology": { 
"-Ki0y2ojhgAkDKVFostV": {}, 
"-Ki0ySAkiILNo2WSM7EO": {}, 
"-Ki1-8R-5gfHJGl9bDYC": {}, 
"-Ki1-fP2HlW0ejzVOGnD": {}, 
"-Ki1-vihF3xgP81UPT5t": {}, 
"-Ki10DSBPWIK0SAv5v8V": {}, 
"-Ki11-pLXVWZlv0XbKpp": {}, 
"-Ki11al-z6_MDBdpLGh7": {}, 
"-Ki11pxZvjvIl68UhVRc": {}, 
"-Ki124jOsYpy9bWpc7Yo": {}, 
"-Ki12oDiad-7X6UBTtBv": {}, 
"-Ki133GHJeys-J0vtdI9": {}, 
"-Ki13Iq62Ly_tx4tcxKa": {}, 
"-Ki13e4pp1Xnq7tnYa4N": {}, 
"-Ki142gU6ZHRkE34r0u3": {}, 
"-Ki14GswYf_lEji5a2PX": {}, 
"-Ki14WZpH5w5jnB4mZF1": {}, 
"-Ki14tX__g6VdmHJHi-g": {}, 
"-Ki15JghcU73RtW5zacV": {}, 
"-Ki15c91cOoRoR7h5aTL": {} 
} 
} 
} 

である私は、私は以下のコードを使用するとTechnology の下で利用可能なキーの数をカウントしたい、= 7を数える取得しますが、20個のキーがあります利用可能なのはTechnology

Query countQuery = countRef.child("ques").child("Technology"); 
countQuery.addChildEventListener(new ChildEventListener() { 
      @Override 
      public void onChildAdded(DataSnapshot dataSnapshot, String s) { 


       questionCount = (int) dataSnapshot.getChildrenCount(); 
       tQuestionNoShow.setText(""+questionCount); 

      } 

      @Override 
      public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

      } 

      @Override 
      public void onChildRemoved(DataSnapshot dataSnapshot) { 

      } 

      @Override 
      public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 

です。実装方法は?

+0

おそらく、すべてのデータを1回取り出すaddListenerForSingleValueEvent()リスナーを使用できます。次に、スナップショットを使用してgetChildrenCount()で子を数えます。それを試しましたか? – user2399432

+0

この質問にはすでに回答があります:[Firebase androidは子供をカウントして変数に格納します](http://stackoverflow.com/questions/41163512/firebase-android-count-children-and-store-it-in- a変数?rq = 1) –

答えて

3
Firebase.setAndroidContext(this); 
    DatabaseReference fbDb = null; 
    if (fbDb == null) { 
     fbDb = FirebaseDatabase.getInstance().getReference(); 
    } 


    fbDb.child("ques/Technology") 
     .addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       // get total available quest 
       int size = dataSnapshot.getChildrenCount(); 
      } 
      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 
+0

ありがとう..私は今、異なるリスナーを理解しています.. –

+0

私は 'ChildEventListener'を使用すると、上記のケースでどのように子を取得するのですか? –

関連する問題