private void RetrieveAndDisplayGroups() {
FirebaseRecyclerOptions<GroupModel> options = new FirebaseRecyclerOptions.Builder<GroupModel>()
.setQuery(FirebaseDatabase.getInstance().getReference().child("Groups"), new SnapshotParser<GroupModel>() {
@NonNull
public GroupModel parseSnapshot(@NonNull DataSnapshot snapshot) {
// I tried to use if statment before return.
return new GroupModel(snapshot.child("groupName").getValue().toString(), snapshot.child("groupDescription").getValue().toString());
}
}).build();
modelAdapter = new GroupModelAdapter(options, getContext());
recyclerExploreGroupView.setAdapter(modelAdapter);
}
所以我正在制作一个群聊应用程序。在我的应用程序中,我只想向用户显示他们创建的组。在数据库中;组";,我拥有所有用户创建的所有组。
我正在使用firebase回收适配器从firebase实时数据库中检索数据。我不熟悉FirebaseRecycleOptions的工作原理。我认为它返回了我传递的一组模型对象。
我尝试在新的firebaseRecycleOptions返回之前使用if语句。但我得到了红线。目标是检查每个小组是否有一个孩子作为要求。并且只取回那些拥有它的人。如有任何帮助,我们将不胜感激。
如果只想在适配器中显示子节点的子集,则应该使用查询从数据库中只检索这些子节点。
在没有看到数据库的情况下很难确定,但在适配器中使用此查询可能是一种选择:
FirebaseDatabase.getInstance().getReference()
.child("Groups")
.orderByChild("groupName")
.startAt(null)
由于null
是Firebase实时数据库排序中的第一个值,因此它将返回任何具有groupName
值的节点。