首页 > 解决方案 > 具有来自过滤器的可变内容的 PageList 不会刷新

问题描述

我必须通过传输过滤器参数MinAge和类MaxAge来过滤 PageList 内容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包含新过滤器参数的方法,因此我会刷新列表但使用旧参数。

我该如何解决这个问题?

标签: androidpagedlist

解决方案


推荐阅读