Android开发

RecyclerView滑动监听,判断是否滑动到了最后一个ite

2018-07-30  本文已影响1210人  苏村的南哥
image.png

前言

RecyclerView 是Android L版本中新添加的一个用来取代ListView的SDK,它的灵活性与可替代性比listview更好。接下来通过一系列的文章讲解如何使用RecyclerView,彻底抛弃ListView.

</br>

介绍

RecyclerView与ListView原理是类似的:都是仅仅维护少量的View并且可以展示大量的数据集。RecyclerView用以下两种方式简化了数据的展示和处理:

你也可以定义你自己的LayoutManager和添加删除动画,RecyclerView项目结构如下:


RecyclerView项目结构

目前SDK中提供了三种自带的LayoutManager:

以上是RecyclerView一些简单的介绍,这篇文章出要讲我在使用过程中遇到的一个问题:RecyclerView滑动监听,判断是否滑动到了最后一个item?

代码如下

recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {  
        //用来标记是否正在向最后一个滑动  
        boolean isSlidingToLast = 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 lastVisibleItem = manager.findLastCompletelyVisibleItemPosition();  
                int totalItemCount = manager.getItemCount();  

                // 判断是否滚动到底部,并且是向右滚动  
                if (lastVisibleItem == (totalItemCount - 1) && isSlidingToLast) {  
                    //加载更多功能的代码  
                }  
            }  
        }  

        @Override  
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {  
            super.onScrolled(recyclerView, dx, dy);  
            //dx用来判断横向滑动方向,dy用来判断纵向滑动方向  
            if (dx > 0) {  
                //大于0表示正在向右滚动  
                isSlidingToLast = true;  
            } else {  
                //小于等于0表示停止或向左滚动  
                isSlidingToLast = false;  
            }  
        }  
    });

总结:

以上代码就可以实现RecyclerView滑动监听,是否到了最后一个item,这在项目是很常见的,希望可以解决遇到的问题。同时如果有更好的方法也可以留言与君共勉!

上一篇下一篇

猜你喜欢

热点阅读