【发布时间】:2018-09-18 02:21:43
【问题描述】:
我正在尝试使用下面的代码实现分页,并且它适用于片段,但是当我在嵌套片段中实现它时,它会加载所有数据(连续加载第一页和所有下一页)。问题是我的总项目数是 12,及时可见是 3,但 layoutManager.getChildCount() 给我 12 与总项目 (layoutManager.getItemCount()) 相同,因此它开始连续加载下一页。
这里是 oNScroll 代码:
public PaginationScrollListener(LinearLayoutManager layoutManager) {
this.layoutManager = layoutManager;
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int visibleItemCount = layoutManager.getChildCount();
int totalItemCount = layoutManager.getItemCount();
int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();
if (!isLoading() && !isLastPage()) {
if ((visibleItemCount + firstVisibleItemPosition) >= totalItemCount
&& firstVisibleItemPosition >= 0
&& totalItemCount >= getTotalPageCount()) {
loadMoreItems();
}
}
}
当滚动和请求下一页时:
recyclerView.addOnScrollListener(new PaginationScrollListener(layoutManager) {
@Override
protected void loadMoreItems() {
isLoading = true;
currentPage += 1;
// mocking network delay for API call
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
loadNextPage();
}
}, 1000);
}
@Override
public int getTotalPageCount() {
return TOTAL_PAGES;
}
@Override
public boolean isLastPage() {
return isLastPage;
}
@Override
public boolean isLoading() {
return isLoading;
}
});
【问题讨论】:
-
我已经用过了,但我遇到了同样的问题,它 loadInitial() 和 loadAfter() 也连续调用..,那是我在 Nested Fragment 中实现它,但在 Fragment 中它运行良好
-
我也遇到了同样的问题,一直在调用 loadAfter...
标签: android android-recyclerview pagination