为什么分页?
从开发者的角度来看,如何加载所有内容?一次不可能显示很多的内容。我们只能显示它们的部分。
分页允许用户看到最新的内容,等待时间很少。当我们在用户滚动到底部时加载下一个“页面”,更多的内容被加载并可用。
何时使用分页?
如果你有大量的内容需要太长时间才能加载。这可以是本地数据库或API调用。那么使用分页是有意义的。如果您从数据库中提取数据,请分批请求数据(每个请求20个)。同样的情况也适用于API调用。
Android分页与RecyclerView
① 自定义OnScrollListener
public abstract class PaginationScrollListener extends RecyclerView.OnScrollListener {
LinearLayoutManager layoutManager;
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) {
loadMoreItems();
}
}
}
protected abstract void loadMoreItems();
public abstract int getTotalPageCount();
public abstract boolean isLastPage();
public abstract boolean isLoading();
}
如果要启用分页,我们必须要检测达到列表(RecyclerView)的结尾。PaginationScrollListener才能启用分页。
② 布局设置
创建一个布局RecyclerView和一个ProgressBar(用于指示初始内容的加载)。
pagination-scroll-output.gif
到这里咱们就结束了。
快乐生活!快乐工作!快乐编程!