PagedList使DataSource无效

时间:2019-05-15 10:10:30

标签: android pagedlist

这里的PageList刷新方法:

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);
    }

但是它不提供新版本的数据,因此我需要使用invalidate()ItemDataSource。我该怎么办?

这里是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
}

1 个答案:

答案 0 :(得分:0)

我通过为数据源添加getter来解决此问题:

public static ItemDataSource getItemDataSource() {
        return itemDataSource;
    }

    private static ItemDataSource itemDataSource;

    @Override
    public DataSource<Integer, Item> create() {
        itemDataSource = new ItemDataSource();

        itemLiveDataSource.postValue(itemDataSource);

        return itemDataSource;
    }

然后我在刷新之前添加了以下行:

        ItemDataSourceFactory.getItemDataSource().invalidate();

这有助于我获取PagedList数据的新版本。