繁体   English   中英

如何在选择 Spinner 时更新 Recyclerview oderBy().startAt()

[英]How to update Recyclerview oderBy().startAt() on selection of Spinner

我的目标是允许用户根据类别进行过滤。 我遇到了 this.orderBy().startAt() 的东西,在我的情况下是 .orderBy("category").startAt(category's string),我可以设置回收站视图,但它不会更新每次在 Spinner 中选择不同的类别或字符串。

这是我的代码

protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Spinner sortingSpinner = findViewById(R.id.spinner_main_sorting);
    String[] sortingCategory = new String[]{"Business", "Life", "Etc"};
    ArrayAdapter<String> spinnerAdapter2 = new ArrayAdapter<>(this,
            android.R.layout.simple_spinner_dropdown_item,
            sortingCategory);
    sortingSpinner.setAdapter(spinnerAdapter2);
    String category_sorted = sortingSpinner.getSelectedItem().toString();

    setUpRecyclerView();
 }

设置 RecyclerView 方法

private void setUpRecyclerView() {
    Query query = MainFeedRef.orderBy("category").startAt(category_sorted);

    FirestoreRecyclerOptions<Entry> options = new FirestoreRecyclerOptions.Builder<Entry>()
            .setQuery(query, Entry.class)
            .build();

    adapter = new AddEntryAdapter(options);

    RecyclerView recyclerView = findViewById(R.id.recycler_view_main);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    recyclerView.setAdapter(adapter);
}

我猜它没有刷新,因为设置方法只运行一次,因为它是 onCreate() 对..? 可以有人指导我如何制作它,以便它可以为每个选择的类别刷新。

Firestore 查询是不可变的:一旦创建,就无法修改。 因此,每次搜索值更改时,您都需要创建一个新查询,并通过调用其updateOptions方法将其传递给现有适配器。

另见:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM