我一直在将我的Android应用程序的数据库从领域切换到Firebase。 是否可以过滤数据库引用,然后在FirebaseRecyclerAdapter中使用它?
这里有一些例子:
DatabaseReference adapterRef = someReference.orderByChild("country").equalTo("Test").getRef();
MyAdapter adapter = new MyAdapter(this, adapterRef);
在我的回收站视图中显示所有数据,这意味着过滤无效。另一方面,当我执行以下操作时:
someReference.orderByChild("country").equalTo("test").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Log.v(TAG, "Value"+snapshot);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
}
});
我可以清楚地看到过滤功能正常,只显示国家/地区等于“测试”的项目。
答案 0 :(得分:0)
您正在构建查询,然后忽略您在此处构建的查询:
DatabaseReference adapterRef = someReference
.orderByChild("country").equalTo("Test") // here you have a query
.getRef(); // here you get back the same location as someReference
正确的咒语是将查询传递给适配器:
Query query = someReference.orderByChild("country").equalTo("Test");
MyAdapter adapter = new MyAdapter(this, query);
您可能需要更改MyAdapter
构造函数,以允许Query
而不是DatabaseReference
来编译它。