查询 FirebaseListAdapter 以仅 return 个自定义视图的特定子级
Querying a FirebaseListAdapter to only return specific children to a custom view
我有一个连接到 Firebase 的 Android 应用程序,我正在使用 FirebaseListAdapter 使用我的数据库引用中的数据填充自定义布局。
这是按预期工作的。但是是否可以仅将此数据查询到 return 某些条目?
例如,如果这是我的数据样本:
"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());
}
};
感谢任何帮助。
您可以基于 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 的 Android 应用程序,我正在使用 FirebaseListAdapter 使用我的数据库引用中的数据填充自定义布局。
这是按预期工作的。但是是否可以仅将此数据查询到 return 某些条目?
例如,如果这是我的数据样本:
"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());
}
};
感谢任何帮助。
您可以基于 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) {