如何在选择 Spinner 时更新 Recyclerview oderBy().startAt()
How to update Recyclerview oderBy().startAt() on selection of Spinner
我的目标是允许用户根据类别进行过滤。我遇到了这个 .orderBy().startAt() 东西,在我的例子中是 .orderBy("category").startAt(category's string),我能够设置回收器视图,但它确实每次在微调器中选择不同的类别或字符串时不会更新。
这是我的代码
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
method.
将其传递给现有适配器
另见:
我的目标是允许用户根据类别进行过滤。我遇到了这个 .orderBy().startAt() 东西,在我的例子中是 .orderBy("category").startAt(category's string),我能够设置回收器视图,但它确实每次在微调器中选择不同的类别或字符串时不会更新。
这是我的代码
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
method.
另见: