我的Firebase中有此查询
mDataBase = FirebaseDatabase.getInstance().getReference("animals);
query = mDataBase.orderByChild("height").limitToLast(20);
query.addChildEventListener(new AnimalsEventListener());
我的倾听者
private class AnimalsEventListener implements ChildEventListener{
private AnimalsEventListener(){
}
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Animals details = dataSnapshot.getValue(Animals.class);
}
@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) {
}
}
在处理dataSnapShot之前,如何获得与查询匹配的所有动物的大小?有时他们可能不到20岁;
答案 0 :(得分:2)
使用ChildEventListener
无法知道孩子的数量,而是使用ValueEventListener
。
public class AnimalsEventListener implements ValueEventListener {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getChildrenCount() == 20) {
for (DataSnapshot dataSnapshotEntry : dataSnapshot.getChildren()) {
Animals details = dataSnapshotEntry.getValue(Animals.class);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
}
要附加此侦听器,请使用addValueEventListener()
方法
query.addValueEventListener(new AnimalsEventListener());
答案 1 :(得分:1)
如果您想使用childEventListener,我建议您使用官方FirebaseArray class。
获取项目数:
FirebaseArray mFirebaseArray = FirebaseArray(Query ref);
mFirebaseArray.getCount();