Мне пришлось отфильтровать содержимое PageList, передав параметры фильтра MinAge
и MaxAge
в ItemDataSource
класс:
public class ItemDataSource extends PageKeyedDataSource<Integer, Item> {
@Override
public void loadInitial(@NonNull LoadInitialParams<Integer> params, @NonNull final LoadInitialCallback<Integer, Item> callback) {
loadData(Util.getMinAge, Util.getMaxAge);
}
// and so on in loadBefore and loadAfter methods
}
Вот метод обновления:
public void refresh() {
RecyclerView recyclerView = findViewById(R.id.list);
ItemViewModel itemViewModel = ViewModelProviders.of(MainActivity.this)
.get(ItemViewModel.class);
final ItemAdapter adapter = new ItemAdapter(MainActivity.this);
itemViewModel.itemPagedList.observe(MainActivity.this,
new Observer<PagedList<Item>>() {
@Override
public void onChanged(@Nullable PagedList<Item> items) {
adapter.submitList(items);
}
});
recyclerView.setAdapter(adapter);
}
Но этот метод не создает заново ItemDataSource
, который содержит новые параметры фильтра, поэтому я получаю обновленный список, но со старыми параметрами.
Как я могу решить эту проблему?