Android 分页库如何知道加载更多数据?
我对开发Android应用程序相当陌生,我正在尝试以“正确的方式”做所有事情。所以现在,我正在将新的Android分页库实现到我的项目中,我需要从网络服务器加载文章列表。
我有一个类,它返回一个类,其中包含我想在回收器视图中显示的实例。文章列表已在服务器上分页,因此存储库发送对第一页的请求,并在请求的页面上返回属性设置为 和包含 文章的属性的属性。我不知道一页上可以有多少篇文章。ArticlesRepository
ArticleList
ArticleListItem
ArticleList
page
1
articles
List<ArticleListItem>
现在,我能够实现一个,但它只获取第一页:PageKeyedDataSource<Integer, ArticleListItem>
@Override
public void loadInitial(@NonNull LoadInitialParams<Integer> params, @NonNull LoadInitialCallback<Integer, ArticleListItem> callback) {
ArticleList list = load(1);
if (list != null) {
callback.onResult(list.articles, null, next(list));
}
}
@Override
public void loadBefore(@NonNull LoadParams<Integer> params, @NonNull LoadCallback<Integer, ArticleListItem> callback) {
ArticleList list = load(previous(params.key));
if (list != null) {
callback.onResult(list.articles, previous(list));
}
}
@Override
public void loadAfter(@NonNull LoadParams<Integer> params, @NonNull LoadCallback<Integer, ArticleListItem> callback) {
ArticleList list = load(next(params.key));
if (list != null) {
callback.onResult(list.articles, next(list));
}
}
/ 函数返回 带有上一页/下一页码的 a,如果没有页码,则返回 。previous
next
Integer
null
在我的ViewModel中,我像这样配置PagedList:
PagedList.Config config = new PagedList.Config.Builder()
.setEnablePlaceholders(false)
.setInitialLoadSizeHint(1)
.setPageSize(1)
.setPrefetchDistance(1)
.build();
通过这种方式,我能够加载第一页,但是当我滚动到RecyclizerView的底部(位于NestedScrollView中)时,没有任何反应。调试显示未调用该方法。PageKeyedDataSource.loadAfter
我是否必须以某种方式告诉PagedList必须加载下一页,或者它是RecyclizerView/DataSource/GodKnowsWhatElse的工作,而我只是做错了什么?感谢您的任何建议。