Java 如何通过微调器过滤FirebaseRecyclerOptions中的数据?
我正在使用Firebase数据库在RecyclerView中显示数据。现在我想使用Android微调器添加一个过滤器选项。当我尝试使用不同的查询时,代码不起作用。 如何使用微调器仅显示一个查询的数据,并通过更改微调器项刷新该查询? 此代码现在可以在没有微调器单击项的情况下工作Java 如何通过微调器过滤FirebaseRecyclerOptions中的数据?,java,android,firebase,firebase-realtime-database,firebaseui,Java,Android,Firebase,Firebase Realtime Database,Firebaseui,我正在使用Firebase数据库在RecyclerView中显示数据。现在我想使用Android微调器添加一个过滤器选项。当我尝试使用不同的查询时,代码不起作用。 如何使用微调器仅显示一个查询的数据,并通过更改微调器项刷新该查询? 此代码现在可以在没有微调器单击项的情况下工作 DatabaseReference reference = FirebaseDatabase.getInstance().getReference(); query = reference.child("
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
query = reference.child("student");
FirebaseRecyclerOptions<ModelPromocje> options =
new FirebaseRecyclerOptions.Builder<ModelPromocje>()
.setQuery(query, ModelPromocje.class)
.build();
DatabaseReference=FirebaseDatabase.getInstance().getReference();
query=reference.child(“学生”);
FirebaseRecyclerOptions选项=
新的FirebaseRecyclerOptions.Builder()
.setQuery(查询,ModelPromocje.class)
.build();
微调器单击项目,当位置为0时,它应显示所有数据
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (position == 0){
query = reference.child("student");
}
else if (position == 1){
query = reference.child("student").orderByChild("course").equalTo("Math");
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
如果(位置==0){
query=reference.child(“学生”);
}
否则如果(位置==1){
query=reference.child(“学生”).orderByChild(“课程”).equalTo(“数学”);
}
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
当用户在微调器中选择一个选项时,在为所选选项创建新的查询后,您需要更新适配器以使用该新查询
通过使用新查询创建一个新的FirebaseRecyclerOptions
对象,然后通过调用其updateOptions
在适配器上设置它
所以在您的中选择了这样的内容
:
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (position == 0){
query = reference.child("student");
}
else if (position == 1){
query = reference.child("student").orderByChild("course").equalTo("Math");
}
new FirebaseRecyclerOptions.Builder<ModelPromocje>()
.setQuery(query, ModelPromocje.class)
.build();
// Change options of adapter.
mAdapter.updateOptions(newOptions)
}
public void已选择(AdapterView父视图、视图视图、int位置、长id){
如果(位置==0){
query=reference.child(“学生”);
}
否则如果(位置==1){
query=reference.child(“学生”).orderByChild(“课程”).equalTo(“数学”);
}
新的FirebaseRecyclerOptions.Builder()
.setQuery(查询,ModelPromocje.class)
.build();
//更改适配器的选项。
mAdapter.updateOptions(新选项)
}
这里有mAdapter
是您最初将选项传递给的FirebaseRecyclerAdapter
是什么。当用户在微调器中选择一个选项时,在为所选选项创建新的查询后,您需要更新适配器以使用该新查询
通过使用新查询创建一个新的FirebaseRecyclerOptions
对象,然后通过调用其updateOptions
在适配器上设置它
所以在您的中选择了这样的内容
:
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (position == 0){
query = reference.child("student");
}
else if (position == 1){
query = reference.child("student").orderByChild("course").equalTo("Math");
}
new FirebaseRecyclerOptions.Builder<ModelPromocje>()
.setQuery(query, ModelPromocje.class)
.build();
// Change options of adapter.
mAdapter.updateOptions(newOptions)
}
public void已选择(AdapterView父视图、视图视图、int位置、长id){
如果(位置==0){
query=reference.child(“学生”);
}
否则如果(位置==1){
query=reference.child(“学生”).orderByChild(“课程”).equalTo(“数学”);
}
新的FirebaseRecyclerOptions.Builder()
.setQuery(查询,ModelPromocje.class)
.build();
//更改适配器的选项。
mAdapter.updateOptions(新选项)
}
这里有mAdapter
是您最初将选项传递给的FirebaseRecyclerAdapter
是什么。非常感谢您,它很管用。有没有办法只刷新firebase数据?现在,当我在微调器中切换选项时,它会进入我的布局顶部,这对用户来说不是很友好:)非常感谢,它很管用。有没有办法只刷新firebase数据?现在,当我在微调器中切换选项时,它会进入布局的顶部,这不是很方便用户:)