这里的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
}
答案 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数据的新版本。