美文网首页类属性recyclerViewlistView,RecyclerView
RecyclerView横向滑动监听,判断是否滑动到了最后一个I

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

作者: 容华谢后 | 来源:发表于2016-10-17 16:41 被阅读6577次
    封面

    项目中的需求,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() {
            // 加载更多
        }
    });
    

    相关文章

      网友评论

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

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