public abstract class OnLoadMoreListener extends RecyclerView.OnScrollListener {
private boolean isLoadingMore = false;
public abstract void onLoadMore();
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
RecyclerView.LayoutManager manager = recyclerView.getLayoutManager();
if (manager.getChildCount() > 0) {
int count = manager.getItemCount();
int last = ((RecyclerView.LayoutParams) manager.getChildAt(manager.getChildCount() - 1).getLayoutParams()).getViewAdapterPosition();
if (last == count - 1 && !isLoadingMore && dy > 0) {//“last == count - 1” 最后的item “!isLoadingMore”不在loading状态 “dy > 0” 下滑
onLoadMore();
isLoadingMore = true;
}
}
if (!recyclerView.canScrollVertically(-1)) {
onScrolledToTop();//滑到顶部
} else if (!recyclerView.canScrollVertically(1)) {
onScrolledToBottom();//滑到底部
} else if (dy < 0) {
onScrolledUp();//上滑
} else if (dy > 0) {
onScrolledDown();//下滑
}
}
/**
* 停止刷新,控制1秒后才能再次loadmoer
*/
public void stopLoadMore() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
isLoadingMore = false;
}
}, 1000);
}
public void onScrolledUp() {
}
public void onScrolledDown() {
}
public void onScrolledToTop() {
}
public void onScrolledToBottom() {
}
}
RecyclerView支持加载更多
最新推荐文章于 2022-06-14 11:57:17 发布