Firebasedatabase - 如何计算子节点

时间:2017-10-04 11:14:35

标签: android firebase firebase-realtime-database

我使用Firebase作为数据库。我想知道如何算上父亲的孩子。我想要做的是,如果没有孩子我想要显示文本视图,但如果父亲下面有孩子我想要显示所有孩子的回收视图。 每个组都保存在用户ID下。在用户ID下保存了用户已打开的所有组。 我尝试了几件事,但仍然没有弄清楚如何做到这一点。 请看图片链接,希望您理解。

FirebaseDatabse Group node

修改

计算儿童的代码

  refCountMembers.getReference(Params.GROUP_LISTS).child(currentUser.getUid()).addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            for(DataSnapshot snapshot : dataSnapshot.getChildren()){
                long count = snapshot.getChildrenCount(); 
                if(snapshot.getChildrenCount() == 0) {
                    +"");                 
                    tvEmptyListGroup.setVisibility(View.VISIBLE);
                    break;
                }else{
                    progressBar.setVisibility(View.INVISIBLE);
                    tvEmptyListGroup.setVisibility(View.INVISIBLE);
                    ref = FirebaseDatabase.getInstance().getReference(Params.GROUP_LISTS).child(currentUser.getUid());
                    GroupsAdapter adapter = new GroupsAdapter(ref,getParentFragment(),progressBar);
                    rvGroup.setAdapter(adapter);
                    rvGroup.setLayoutManager(new LinearLayoutManager(getContext()));
     }
   }
  }

我是用childEventListener做的,因为我想确保当我删除一个组并且有0个组以便它将显示textview时或者如果我添加一个组它应该显示recyclelerView。 childEventListener激活evey时间对父进行更改,对吗?

1 个答案:

答案 0 :(得分:0)

创建一个模型类作为您的组信息。

public class Group {
    private String groupName;
    private String groupUID;
    private String ownerGroupUID;

    // Getters and setters
}

现在将所有组保存在用户ID下。

    final List<Group> groupList = new ArrayList<>(); // list of groups
    FirebaseDatabase.getInstance()
            .getReference()
            .child("GroupLists")
            .child("dS...") // this is the id of user - over whose groups you want to iterate
            .addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                    for (DataSnapshot snapshot : dataSnapshot.getChildren()){
                        Group group = snapshot.getValue(Group.class); // this is a group
                        groupList.add(group); // add to list
                    }

                    if (groupList.size()>0){
                        // Now display all groups in recycler view..

                    } else {
                        // Now display in textview that group list is empty

                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

}