如何通过微调器过滤 FirebaseRecyclerOptions 中的数据?
How to filter data in FirebaseRecyclerOptions by spinner?
我正在使用 Firebase 数据库在 RecyclerView 中显示数据。现在我想使用 Android 微调器添加一个过滤器选项。当我尝试使用不同的查询代码时,它不起作用。
如何使用微调器仅显示 1 个查询的数据并通过更改微调器项目来刷新它?
此代码现在可以在没有微调器点击项的情况下使用。
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
query = reference.child("student");
FirebaseRecyclerOptions<ModelPromocje> options =
new FirebaseRecyclerOptions.Builder<ModelPromocje>()
.setQuery(query, 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) {
}
});
当用户在微调器中选择一个选项时,在您为所选选项创建新的 query
之后,您需要更新适配器以使用该新查询。
您可以通过使用新查询创建一个新的 FirebaseRecyclerOptions
对象来做到这一点,然后通过调用它的 updateOptions
.
在适配器上设置它
所以你的 onItemSelected
中有这样的东西:
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)
}
那里 mAdapter
是 FirebaseRecyclerAdapter
是你最初也将你的选项传递给的任何东西。
我正在使用 Firebase 数据库在 RecyclerView 中显示数据。现在我想使用 Android 微调器添加一个过滤器选项。当我尝试使用不同的查询代码时,它不起作用。 如何使用微调器仅显示 1 个查询的数据并通过更改微调器项目来刷新它? 此代码现在可以在没有微调器点击项的情况下使用。
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
query = reference.child("student");
FirebaseRecyclerOptions<ModelPromocje> options =
new FirebaseRecyclerOptions.Builder<ModelPromocje>()
.setQuery(query, 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) {
}
});
当用户在微调器中选择一个选项时,在您为所选选项创建新的 query
之后,您需要更新适配器以使用该新查询。
您可以通过使用新查询创建一个新的 FirebaseRecyclerOptions
对象来做到这一点,然后通过调用它的 updateOptions
.
所以你的 onItemSelected
中有这样的东西:
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)
}
那里 mAdapter
是 FirebaseRecyclerAdapter
是你最初也将你的选项传递给的任何东西。