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

x6yk4ghg  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(346)

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

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) {
        }
    });
hvvq6cgz

hvvq6cgz1#

当用户在微调器中选择一个选项时,在您创建新的 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 你最初也把你的选择权传给了。

相关问题