【发布时间】:2017-10-04 11:14:34
【问题描述】:
我使用 Firebase 作为数据库。我想知道如何计算父亲的孩子。我想做的是,如果没有孩子,我想显示文本视图,但如果父亲下面有孩子,我想显示所有孩子的循环视图。 每个组保存在用户 ID 下。在用户 ID 下保存了用户打开的所有组。 我已经尝试了几件事,但仍然没有弄清楚如何做到这一点。 请看图片链接,希望你能理解。
编辑:
计数儿童的代码
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,或者如果我要添加一个组,它应该显示 recyclerView。 childEventListener 每次更改它的父级时都会启动,对吗?
【问题讨论】:
-
解决方案可能涉及
DataSnapshot.getChildrenCount()。如果没有看到获取父节点的代码,很难提供帮助。 -
我添加了我的代码。好吃吗?
-
要检测是否没有孩子,您需要保留自己的计数器(在
onChildAdded中递增,在onChildRemoved中递减),或者您需要额外的ValueEventListener地点。在后一种情况下,您可以使用snapshot.getChildrenCount() == 0或!snapshot.exists()来检测是否存在子节点。也可以在这里查看我的答案:stackoverflow.com/questions/39900082/…(适用于 JavaScript,但 Android SDK 的工作方式相同)。 -
谢谢,真的很有帮助!
标签: android firebase firebase-realtime-database