美文网首页Android开发
RecyclerView滑动监听,判断是否滑动到了最后一个ite

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

作者: 苏村的南哥 | 来源:发表于2018-07-30 16:48 被阅读1210次
    image.png

    前言

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

    </br>

    介绍

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

    • 使用LayoutManager来确定每一个item的排列方式。
    • 为增加和删除项目提供默认的动画效果。

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


    RecyclerView项目结构
    • Adapter:使用RecyclerView之前,你需要一个继承自RecyclerView.Adapter的适配器,作用是将数据与每一个item的界面进行绑定。
    • LayoutManager:用来确定每一个item如何进行排列摆放,何时展示和隐藏。回收或重用一个View的时候,LayoutManager会向适配器请求新的数据来替换旧的数据,这种机制避免了创建过多的View和频繁的调用findViewById方法(与ListView原理类似)。

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

    • LinearLayoutManager

    • GridLayoutManager

    • StaggeredGridLayoutManager

    以上是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,这在项目是很常见的,希望可以解决遇到的问题。同时如果有更好的方法也可以留言与君共勉!

    相关文章

      网友评论

        本文标题:RecyclerView滑动监听,判断是否滑动到了最后一个ite

        本文链接:https://www.haomeiwen.com/subject/weifvftx.html