是否可以指定FirebaseListAdapter
读取的数据?
目前,我只能阅读完整的数据库。数据库中有很多不同的对象。对象有一个值,该值表示创建该对象的用户。
现在,我只想从这个特殊用户那里读取对象。当我这样尝试时,列表字段是空的。
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl("URL");
//HOW CAN I DO THE QUERY FOR THAT DATABASE REFERENCE?
FirebaseListAdapter<Machine> firebaseListAdapter = new FirebaseListAdapter<Machine>(
this,
Machine.class,
R.layout.list_item,
databaseReference) {
@Override
protected void populateView(View v, final Machine model, int position) {
//CAN I DO THIS BY QUERY?
if(model.getS_UserID.equals(user.getID)){
//SOME STUFF WHICH I DO
}
};
}
list.setAdapter(firebaseListAdapter);
问题是,我可以通过查询
FirebaseListAdapter
来执行if语句吗?现在,我做了这样的事情:
if(model.gets_userid.equals(user.getid())-->做些事情
但它也会产生一些非常丑陋的空白区域。
我的数据库如下:
对象
-userid=字符串
-名称=…
-……
最佳答案
您可以将Query
传递到FirebaseListAdapter
而不是您现在使用的数据库引用。要筛选具有用户ID的项目,请执行以下操作:
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl("URL");
Query query = databaseReference.orderByChild("s_UserId").equalTo(user.getID);
FirebaseListAdapter<Machine> firebaseListAdapter = new FirebaseListAdapter<Machine>(
this,
Machine.class,
R.layout.list_item,
query) {
在Firebase documentation on ordering and filtering data中阅读更多信息。