有没有办法在不加载Android中的所有节点数据的情况下获取节点的子节点数?

时间:2016-03-11 06:53:22

标签: android firebase

我的数据结构(userdetails)

-KCV32vWQECRlMvlgkGO
    Name: "asdf"
    Phoneid: "1zlkflakfhkf0e8"
    Phoneno: "9478567899"
-KCV3s-lwv5i-VvFBaxq
    Name: "asas"
    Phoneid: "1c584jbascjasc8"
    Phoneno: "9999999999"

我的方法

queryRef.addChildEventListener(new ChildEventListener() {

    public void onCancelled(FirebaseError arg0) {
        // TODO Auto-generated method stub
    }

    public void onChildAdded(DataSnapshot arg0, String arg1) {
        // TODO Auto-generated method stub
        System.out.println("Size "+arg0.getChildrenCount());
    }

如何计算2?我得到3次,因为每次进入并分别生孩子。

1 个答案:

答案 0 :(得分:4)

问题是child_added事件为您提供的快照是新的子数据。因此getChildrenCount()计算新孩子拥有的属性(子女)的数量(并且它有3个)。

要做你想做的事,你应该像这样添加一个ValueEventListener事件:

queryRef.addValueEventListener(new ValueEventListener() {
    public void onCancelled(FirebaseError arg0) {
    }

    public void onDataChanged(DataSnapshot arg0, String arg1) {
        System.out.println("Size "+arg0.getChildrenCount());
    }
});

每当值发生变化时,这应该返回queryRef位置的所有孩子(例如新孩子)。

告诉我这是否有效,因为我无法亲自尝试。