我想填充 recyclerview,以便我可以使用它来显示帖子。
这就是我填充回收器 View 的方式: How can I retrieve data from Firebase to my adapter
但是根据用户所在的国家/地区,我需要过滤仅与他的国家/地区相关的帖子。
在数据库结构中,TO、FROM、PASSING、REQUEST FROM 是我需要过滤的内容。 因为在这些参数中我输入了国家/地区代码,所以我可以仅过滤用户所在的国家/地区。
我可以在查询中添加此信息吗?我是否能够从子项中检索其他信息,以便当用户单击 recyclerview 中的帖子时我可以在帖子中显示它。
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); Query query = rootRef.child("Trading info").orderbyChild("TO location").equals(USA);
因此,如果 child 包含美国,它将显示在帖子中,当用户点击帖子时,我是否能够像平常一样检索所有数据。
抱歉,如果没有得到最好的解释。 我想知道,我是否能够从过滤的子节点中检索所有其他子节点。 从子节点中检索子节点中包含 USA 的节点。
<小时/>并且可以使用多个查询,因为我需要检查 FROM、PASSING、TO 和 REQUEST FROM 位置子节点(如果它包含我需要的国家/地区代码)。
最佳答案
要检索电子邮件
、姓名
和可用性
,请尝试以下操作:
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("Trading info");
databaseReference.orderbyChild("TO location").equals("USA").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()){
String fromLocation = ds.child("FROM location").getValue(String.class);
String passingLocation = ds.child("PASSING location").getValue(String.class);
DatabaseReference voluneterService = FirebaseDatabase.getInstance().getReference("Volunteer services");
voluneterService.orderbyChild("FROM location").equals(fromLocation).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()){
String fromLocation = ds.child("availability").getValue(String.class);
String passingLocation = ds.child("email").getValue(String.class);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
首先在节点交易信息
处添加引用,然后在属性TO location
上使用orderByChild
并检索FROM location
和通过位置
。
然后添加另一个对节点志愿者服务
的引用,并在属性FROM location
上使用orderByChild
。在 equalTo()
内部使用您在第一个监听器中检索的变量 fromLocation
,然后您将能够检索 email
、name
和可用性
。
关于java - 过滤 firebase 中的子数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58855314/