У меня есть RecyclerView с AAC в моем фрагменте.ViewModel -> Repository -> DAO с некоторыми пользовательскими запросами и getAllItems.
Я хочу использовать FAB-фильтр или Spinner для вызова запросов getOrderItemList или getWhereItemList, но я не знаю, как я должен это делать.
У меня есть фильтр репозитория для моего SearchView, но это другая вещь, теперь я хочу изменить порядок списка (в алфавитном порядке, год ...) и создать WhereCondition с большим количеством флажков, которые есть в диалоге(пример: я устанавливаю флажок «завершить» и «Действие» и создает строку String whereCondition = "(status = 'complete' и жанр похож на '% Action%')").
Как я могу вызвать getWhereItemList иgetOrderItemList запрашивает мой фрагмент, чтобы изменить содержимое моего RecyclerView?
ItemDAO:
@Query("SELECT * from item_table ")
<List<Item>> getItemList();
@Query("SELECT * from item_table ORDER by :order DESC")
<List<Item>> getOrderItemList(String order);
@Query("SELECT * from item_table WHERE :whereCondition")
<List<Item>> getWhereItemList(String whereCondition);
Мой фрагмент заполняет RecyclerView с помощью getAllItems:
private ItemViewModel myItemViewModel;
RecyclerView myRecyclerView = findViewById(R.id.recyclerview);
final ItemListAdapter myAdapter = new ItemListAdapter(this);
myRecyclerView.setAdapter(myAdapter);
myRecyclerView.setLayoutManager(new LinearLayoutManager(this));
myItemViewModel = ViewModelProviders.of(this).get(ItemViewModel.class);
myItemViewModel.getAllItems().observe(this, new Observer<List<Item>>() {
@Override
public void onChanged(@Nullable final List<Item> items) {
myAdapter.setItems(items);
}
ItemListAdapter:
private List<Item> myItems;
void setItems(List<Item> items){
myItems = items;
notifyDataSetChanged();
}
ItemViewModel:
private ItemRepository myRepository;
private LiveData<List<Item>> myAllItems;
public ItemViewModel (Application application) {
super(application);
myRepository = new ItemRepository(application);
myAllItems = myRepository.getAllItems();
}
LiveData<List<Item>> getAllItems() { return myAllItems; }
Спасибо.