【问题标题】:How to filter data in FirebaseRecyclerOptions by spinner?如何通过微调器过滤 FirebaseRecyclerOptions 中的数据?
【发布时间】:2021-03-30 19:16:19
【问题描述】:

我正在使用 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();

Spinner 点击项,位置为 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) {
        }
    });

【问题讨论】:

    标签: java android firebase firebase-realtime-database firebaseui


    【解决方案1】:

    当用户在微调器中选择一个选项时,在为所选选项创建新的 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数据?现在,当我在微调器中切换选项时,它会转到我的布局顶部,这不是很用户友好:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多