Android 如何知道Firebase中查询返回的项目数

Android 如何知道Firebase中查询返回的项目数,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我的Firebase中有此查询 mDataBase = FirebaseDatabase.getInstance().getReference("animals); query = mDataBase.orderByChild("height").limitToLast(20); query.addChildEventListener(new AnimalsEventListener()); 我的听众 private class AnimalsEventListener

我的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人

使用
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());

如果你想使用childEventListener,我建议你使用official

要获取项目计数,请执行以下操作:

FirebaseArray mFirebaseArray = FirebaseArray(Query ref);
mFirebaseArray.getCount();

你完全正确。我想我误解了
ValueEventListener
onDataChange()
。提醒我的荣誉哇,看起来很棒。你能举个例子说明如何使用这个类,包括如何附加侦听器吗?我在互联网上找不到android的任何例子。通过相同的链接,你可以找到firebaes ui相关的类。或者您可以直接使用firebas ui库。以下是recycleradapter,其中firebase阵列是通过侦听器实现的@uguboz当您调用
mFirebaseArray.getCount()
所有项目都将被添加到arraylist时,您有多确定?当您创建FirebaseArray实例时,它将立即开始提取项目。如果您实现了侦听器,您不需要知道是否所有项都已添加或仍在添加,因为它可能会随childevents而更改。当你的工作符合你的标准时,你应该去做。