使用 MVP 模式在具有 PairList 的回收器视图中实现加载更多



我正在寻找最佳实践。我想在每 10 个项目后实现加载更多 [进度条](使用 RecyclerView)。 过去,我只是通过简单地创建Loader类项并添加到我的列表中的特定位置来做到这一点。好吧,这一次,我使用的是 PairList,并且不可能添加 Loader 类项(即使我个人认为,这是一种非常干净的方法)。

我在SO上找到了一些解决方案,它们几乎相同: 如何在Android中实现加载更多回收器视图

有没有其他方法可以在每个第 10 个元素之后实现此加载更多进度条(首先从 API 加载 10 个项目,然后,当用户到达第 10 个项目时,我们显示进度条[同时我们获取接下来的 10 个项目],删除进度条,添加 10 个项目等等)。

在回收器滚动监听器中使用此 InfiniteScrollListener

public abstract class InfiniteScrollListener extends RecyclerView.OnScrollListener {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (dy > 0) {
LinearLayoutManager linearLayoutManager = (LinearLayoutManager)recyclerView.getLayoutManager();
int visibleItemCount = linearLayoutManager.getChildCount();
int totalItemCount = linearLayoutManager.getItemCount();
int pastVisiblesItems = linearLayoutManager.findFirstVisibleItemPosition();
if ((visibleItemCount + pastVisiblesItems) >= totalItemCount) {
loadMore();
}
}
}
protected abstract void loadMore();}

回收器查看侦听器:

recyclerView.addOnScrollListener(new InfiniteScrollListener() {
@Override
protected void loadMore() {
boolean willLoad = //get your last api call data. if empty set false
int offset = recyclerView.getAdapter().getItemCount();
if(willLoad){
willLoad=false;
onCallApi(offset,10);
}
}
});

您的 API:

private void onCallApi(int offset,int limit){
//your api
}

最新更新