查询FirebaseListAdapter仅将特定子项返回到自定义视图

时间:2016-10-17 09:11:14

标签: java android firebase firebase-realtime-database firebaseui

我有一个连接到Firebase的Android应用程序,我正在使用FirebaseListAdapter使用我的数据库引用中的数据填充自定义布局。

这是按预期工作的。但是有可能查询这些数据只返回某些条目吗?

例如,如果这是我的数据样本:

"students" : {  
  "-KTA7xijNrK1SK98rZns" : {     
    "name" : "Ro",      
    "age" : 28,         
    "email" : "test@test.com"
  },

"-KTABiJuH2-RXwmp0Rcu" : {   
   "name" : "Tom",      
   "age" : 22,         
   "email" : "test1@test.com"
  }...

因此,目前所有学生都通过自定义视图填充到ListAdapter中,这是我想要的初始加载,但是如果我只想显示超过一定年龄的学生或者具有特定名称的学生,则基于按钮单击是否有可能以某种方式将这些查询集成到FirebaseListadapter中?

当前列表适配器代码。

 //Firebase DB srefrence
    mDatabaseStolen =    FirebaseDatabase.getInstance().getReference().child("students");

FirebaseListAdapter<Student> bikeAdapter = new FirebaseListAdapter<Studnet>
            (getActivity(), Student.class, R.layout.list_item, mDatabase) {
        @Override
        protected void populateView(View v, Student model, int position) {


                // Find the TextView IDs of list_item.xml
                TextView nameView = (TextView) v.findViewById(R.id.name);
                TextView ageView = (TextView) v.findViewById(R.id.age);
                TextView emailView = (TextView) v.findViewById(R.id.email);

                //setting the textViews to Student data
                nameView.setText(model.getname());
                ageView.setText(String.valueOf(model.getAge()));
                emailView.setText(model.getEmail());
  }
 };

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:2)

您可以根据initial-scale=1.0或基于DatabaseReference构建FirebaseListAdapter。使用Query,它会显示某个位置的所有数据。但是当您使用DatabaseReference时,您可以在该位置显示数据的子集。

假设您只想展示年龄在20到25岁之间的学生:

Query

另见Firebase documentation on queries