2 回答
TA贡献1807条经验 获得超9个赞
负载大小和偏移量通过设置,因此您无需自己计算负载范围。PagedList.Config
更改函数loadInitial
@Override
public void loadInitial(@NonNull LoadInitialParams params, @NonNull LoadInitialCallback callback) {
Log.d("PaginationDataSource", "loadInitial");
if (callLogs!=null && !callLogs.isEmpty())
{
callback.onResult(loadRangeInternal(0, params.requestedLoadSize), 0);
}
}
编辑:请同时尝试此配置
PagedList.Config config =
new PagedList.Config.Builder()
.setPageSize(50)
.setEnablePlaceholders(false)
.setPrefetchDistance(25)
.build();
编辑2:尝试将扩展从 更改为 和 更改为DataSource.FactoryDataSource.Factory<Integer, ModelClass>PositionalDataSourcePositionalDataSource<ModelClass>
TA贡献1776条经验 获得超12个赞
经过太多的挣扎,我能够解决我的问题。问题出在我的getPagedCallLog方法上。我写道:
public synchronized LiveData<PagedList<CallTable>> getPagedCallLogs() {
if (pagedCallLogs!=null && pagedCallLogs.getValue()!=null)
{
Log.d("PagingGetData", "Done");
return pagedCallLogs;
}
else
{
Log.d("PagingGetData", "Null");
return null;
}
}
我正在学习Google I / O '18,他说loadInitial是由pageList调用的,然后我意识到在我的情况下它没有被调用。在删除pagedCallLogs.getValue()!=null后,它工作正常,这是我的愚蠢错误。
现在它看起来像这样:
public synchronized LiveData<PagedList<CallTable>> getPagedCallLogs() {
if (pagedCallLogs!=null)
{
Log.d("PagingGetData", "Done");
return pagedCallLogs;
}
else
{
Log.d("PagingGetData", "Null");
return null;
}
}
添加回答
举报