Android Paging Library loadAfter()未调用

Har*_*Tiu 5 paging pagination android android-recyclerview android-jetpack

让我简要介绍一下我要做什么。因此,基本上,我是Android Jetpack中的此分页库的新手,并且正在尝试实现分页列表。后端已经完成了按请求分页的部分(默认情况下,后端每页返回25个项目),所以我要做的就是发出请求并指定要显示的页面,然后将返回我需要的项目。我能够显示和进行loadInitial()工作,但是当我滚动到最低的项目时,它不会触发loadAfter()

PagedListAdapter和我RecyclerView非常直白,因此我认为在这里张贴它不会有所帮助。在onCreateViewHolder返回的数据绑定ViewHolder。在onBindViewHolder刚刚叫我viewholder内的方法和设置的项目。我没有重写该getItem()方法。关于我的适配器和DiffCallback

但是,下面是我的其他代码段。请注意,为了隐私起见,我已经修改了变量名和方法名。

我的LivePagedListBuilder配置

public MyViewModel() {
    PagedList.Config config =
        new PagedList.Config.Builder()
            .setPageSize(1)
            .setPrefetchDistance(1)
            .build();

    items = new LivePagedListBuilder<>(myDataSourceFactory, config).build();
}

public LiveData<PagedList<Item>> getItems() {
    return items;
}
Run Code Online (Sandbox Code Playgroud)

我在View中观察LiveData的方式

viewModel.getItems().observe(this, items -> {
  adapter.submitList(items);
});
Run Code Online (Sandbox Code Playgroud)

我的数据源:ItemKeyedDataSource

private int defaultPage = 1;

public void loadInitial(@NonNull LoadInitialParams<Integer> params, @NonNull 
 LoadInitialCallback<Item> callback) {

    remoteRepository.getItems(String.valueOf(defaultPage))
    ...
}

public void loadAfter(@NonNull LoadParams<Integer> params, @NonNull LoadCallback<Item> callback) {

    remoteRepository.getItems(String.valueOf(params.key))
    ...
}

public Integer getKey(@NonNull Item item) {
    return defaultPage++;
}
Run Code Online (Sandbox Code Playgroud)