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支持加载更多
猜你喜欢
转载自blog.csdn.net/u012390044/article/details/62422092
今日推荐
周排行