[英]pagination in android with recyclerView
我正在使用android应用程序在其中执行recyclerView分页。 基本上我的片段中有两个recylerView。 我正在使用带有一个recyclerView的recylerview addOnScrollListener执行分页。 但是效果不佳。 当我做出这个条件时
if(dy > 0 ){
}
然后这种情况变为假,什么也没有实现,当我删除这种情况时,所有页面加载而无需滚动。 我该怎么做。 当我向下滚动一个recyclerview时,我想要这个,然后将加载下一页。 这是我的代码:
private void recyclerPagination() {
rvRecProduct.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (dy > 0) {
linearLayoutManager = (GridLayoutManager) rvRecProduct.getLayoutManager();
visibleItemCount = recyclerView.getChildCount();
totalItemCount = linearLayoutManager
.getItemCount();
firstVisibleItem = linearLayoutManager.findFirstVisibleItemPosition();
if (loading) {
if (totalItemCount > previousTotal) {
previousTotal = totalItemCount;
page++;
loading = false;
}
}
if (page <= limit) {
if (!loading && (firstVisibleItem + visibleThreshold + visibleItemCount) >= totalItemCount) {
loading = true;
getPagination();
Log.e("PageNO",String.valueOf(page));
}
}
}
}
});
}
使用Recycler View的Android分页加载超过10页的分页滚动侦听器类:
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 boolean isLastPage();
public abstract boolean isLoading();}
将此代码添加到您的活动或片段中:
public static final int PAGE_START = 1;
private int CURRENT_PAGE = PAGE_START;
private boolean isLoading = false, isLastPage = false;
private RecyclerView recyclerView;
private LinearLayoutManager linearLayoutManager;
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
linearLayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(new MyAdapter(list))
recyclerView.addOnScrollListener(new PaginationScrollListener(linearLayoutManager) {
@Override
protected void loadMoreItems() {
isLoading = true;
CURRENT_PAGE++;
loadNextPage();
}
@Override
public boolean isLastPage() {
return isLastPage;
}
@Override
public boolean isLoading() {
return isLoading;
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.