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

时间:2016-11-09 12:29:32

标签: android firebase firebase-realtime-database

我的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岁;

2 个答案:

答案 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();