RecyclerView横向滑动监听,判断是否滑动到了最后一个Item
2016-07-25 14:54
387 查看
项目中的需求,RecyclerView横向滑动列表,要有加载更多的功能,给RecyclerView设置一个滑动监听,在onScrolled方法中判断一下滑动方向,然后在onScrollStateChanged方法中判断一下是否滑动到了最后一个item即可,代码中已经写了详细的注释:
public abstract class EndlessRecyclerOnScrollListener extends RecyclerView.OnScrollListener { //用来标记是否正在向左滑动 private boolean isSlidingToLeft = false; @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager(); // 当不滑动时 if (newState == RecyclerView.SCROLL_STATE_IDLE) { // 获取最后一个完全显示的itemPosition int lastItemPosition = manager.findLastCompletelyVisibleItemPosition(); int itemCount = manager.getItemCount(); // 判断是否滑动到了最后一个Item,并且是向左滑动 if (lastItemPosition == (itemCount - 1) && isSlidingToLeft) { // 加载更多 onLoadMore(); } } } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); // dx值大于0表示正在向左滑动,小于或等于0表示向右滑动或停止 isSlidingToLeft = dx > 0; } /** * 加载更多回调 */ public abstract void onLoadMore(); }看下如何使用:
// 设置加载更多监听 recyclerView.addOnScrollListener(new EndlessRecyclerOnScrollListener() { @Override public void onLoadMore() { // 加载更多 } });
相关文章推荐
- Android渲染器Shader:环状放射渐变渲染器RadialGradient(三)
- Android渲染器Shader:环状放射渐变渲染器RadialGradient(三)
- openwrt串口的使用
- Android 使用Vitamio打造自己的万能播放器(5)――在线播放(播放优酷视频)
- TaintDroid剖析之Native方法级污点跟踪分析
- phpStudy集成环境下 安装composer失败
- Android 进阶知识点整理
- AVFoundation里用到的相关库(一)
- HDOJ 1060 Leftmost Digit
- SVM原理详解
- 判断VIEW是否还在显示
- javascript与jquery动态创建html元素示例
- 获取freemarker处理后的内容
- ASP.NET Core 1.0实现邮件发送功能
- js正则表达式
- ios中基于电子书导航的实现
- Cocos Creator脚本开发(一)
- 剖析布隆过滤器
- 欢迎使用Markdown编辑器写博客
- cuda-gdb