2017-04-25 69 views
1

这里是我的火力地堡数据Android的火力点 - 让儿童数

{ 
"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

也许您可以使用addListenerForSingleValueEvent()侦听器来获取所有数据一次。然后,您可以使用快照通过getChildrenCount()来计算子节点。你试过了吗? – user2399432

+0

这个问题已经在这里有一个答案:[Firebase安卓计数的儿童和存储在一个变量](http://stackoverflow.com/questions/41163512/firebase-android-count-children-and-store-it-in-一个变量?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然后如何让孩子在上面的情况? –