我想从本地数据库加载1000 条分页记录。我可以通过设置查询限制来加载初始记录,但列表滚动时不会加载连续记录。
我从以下获取DataSource
数据PagedList
:
PagedList pagedList = new PagedList.Builder<Integer, ModelClass>()
.setConfig(new PagedList.Config.Builder()
.setPageSize(50)
.setPrefetchDistance(50)
.setEnablePlaceholders(false)
.build())
.setDataSource(new DataClassKeyed())
.setMainThreadExecutor(new MainThreadExecutor())
.setBackgroundThreadExecutor(new BackgroundThreadExecutor())
.build();
adapter.setList(pagedList);
数据源
公共类 DataClassKeyed 扩展 KeyedDataSource {
@Override
public Integer getKey(@NonNull ModelClass modelClass) {
return modelClass.id;
}
@Override
public List<WorkOrder> loadInitial(int pageSize) {
//query which sets data in list and
return list;
}
@Override
public List<ModelClass> loadBefore(@NonNull Integer id, int pageSize) {
//query which sets data in list
return list;
}
@Override
public List<ModelClass> loadAfter(@Nullable Integer id, int pageSize) {
// Return items adjacent to 'id'
return list;
}
}