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

Van*_*tha 5 android firebase

我的数据结构(userdetails)

-KCV32vWQECRlMvlgkGO
    Name: "asdf"
    Phoneid: "1zlkflakfhkf0e8"
    Phoneno: "9478567899"
-KCV3s-lwv5i-VvFBaxq
    Name: "asas"
    Phoneid: "1c584jbascjasc8"
    Phoneno: "9999999999"
Run Code Online (Sandbox Code Playgroud)

我的方法

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());
    }
Run Code Online (Sandbox Code Playgroud)

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

Pie*_* C. 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());
    }
});
Run Code Online (Sandbox Code Playgroud)

queryRef每次值更改时,这都应返回该位置的所有子项(例如新子项)。

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