是否可以指定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中阅读更多信息。

10-06 00:32