Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过微调器过滤FirebaseRecyclerOptions中的数据?_Java_Android_Firebase_Firebase Realtime Database_Firebaseui - Fatal编程技术网

Java 如何通过微调器过滤FirebaseRecyclerOptions中的数据?

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("

我正在使用Firebase数据库在RecyclerView中显示数据。现在我想使用Android微调器添加一个过滤器选项。当我尝试使用不同的查询时,代码不起作用。 如何使用微调器仅显示一个查询的数据,并通过更改微调器项刷新该查询? 此代码现在可以在没有微调器单击项的情况下工作

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数据?现在,当我在微调器中切换选项时,它会进入布局的顶部,这不是很方便用户:)