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

这按预期工作。但是是否可以查询此数据以仅返回某些条目?

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

"students" : {
  "-KTA7xijNrK1SK98rZns" : {
    "name" : "Ro",
    "age" : 28,
    "email" : "[email protected]"
  },

"-KTABiJuH2-RXwmp0Rcu" : {
   "name" : "Tom",
   "age" : 22,
   "email" : "[email protected]"
  }...


因此,目前所有学生都通过自定义视图填充到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());
  }
 };


任何帮助表示赞赏。

最佳答案

您可以基于DatabaseReference或基于Query构造FirebaseListAdapter。使用DatabaseReference它将在一个位置显示所有数据。但是,当您使用Query时,可以在该位置显示数据的子集。

假设您只想显示20至25岁的学生:

students =    FirebaseDatabase.getInstance().getReference().child("students");
studentsQuery = students.orderByChild("age").startAt(20).endAt(25);

bikeAdapter = new FirebaseListAdapter<Student>
     (getActivity(), Student.class, R.layout.list_item, studentsQuery) {


另请参见Firebase documentation on queries

关于java - 查询FirebaseListAdapter仅使特定子级返回自定义 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40082456/

10-09 01:42