我必须通过将过滤器参数MinAge
和MaxAge
传输到ItemDataSource
类来过滤PageList内容:
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
,因此我会刷新列表但使用旧参数。
我该如何解决这个问题?