我正在寻找最佳实践。我想在每10个项目之后实现加载更多[progressbar](使用RecyclerView)。 在过去,我通过简单地创建 Loader 类项目并添加到我的 List 中的特定位置来完成此操作。好吧,这次,我正在使用PairList,并且不可能添加Loader类项目(即使我个人认为,这是一个非常干净的方法)。
我在SO上找到了一些解决方案,几乎相同:How to implement load more recyclerview in android
有没有其他方法可以在每10个元素之后实现此加载更多进度条(首先从API加载10个项目,然后,当用户到达第10个项目时,我们显示进度条[同时我们获取接下来的10个项目],删除进度条,添加10项等)。
答案 0 :(得分:2)
在您的回收商scrollListener中使用此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 Listener:
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
}