美文网首页Android开发
自定义RecyclerView监听滑动到底部Bottom

自定义RecyclerView监听滑动到底部Bottom

作者: GitOPEN | 来源:发表于2017-01-07 14:27 被阅读687次

    前言

    最近在做一个本地的万能播放器,需要监听RecyclerView滑动到底部,向用户提示已经滑动到最底部;看了网上其他童鞋的写法,比较繁琐。现在给出我的实现方法,非常简单实用,在监听回调方法中,可以做很多想做的事情:

    1.提示用户已经到达底部(Snack或者Toast);
    2.可以加载更多(我最讨厌格外加一个item来显示加载更多,于是当到达底部后直接给Adapter添加数据就好);
    3.可以额外再添加一个控件,来实现快速返回顶部(由你自己实现);
    4.等等。。。。(只要你判断好了到达底部,就可以在底部做自己想干的事情)。

    预览图

    扫描二维码关注公众号

    SuperRecycler.java代码:

    public class SuperRecycler extends RecyclerView {
    
        private OnBottomCallback mOnBottomCallback;
    
        public interface OnBottomCallback {
            void onBottom();
        }
    
        public void setOnBottomCallback(OnBottomCallback onBottomCallback) {
            this.mOnBottomCallback = onBottomCallback;
        }
    
        public SuperRecycler(Context context) {
            this(context, null);
        }
    
        public SuperRecycler(Context context, @Nullable AttributeSet attrs) {
            this(context, attrs, 0);
        }
    
        public SuperRecycler(Context context, @Nullable AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
        }
    
        @Override
        public void onScrolled(int dx, int dy) {
    
            if (isSlideToBottom()) {
                mOnBottomCallback.onBottom();
            }
        }
    
        /**
        * 其实就是它在起作用。
        */
        public boolean isSlideToBottom() {
            return this != null
                    && this.computeVerticalScrollExtent() + this.computeVerticalScrollOffset()
                    >= this.computeVerticalScrollRange();
        }
    
    }
    

    使用方法

    SuperRecycler recycler = (SuperRecycler) mFraView.findViewById(R.id.recycler);
    GridLayoutManager manager = new GridLayoutManager(getActivity(), 2, GridLayoutManager.VERTICAL, false);
    recycler.setLayoutManager(manager);
    recycler.setAdapter(mAdt);
    recycler.setOnBottomCallback(new SuperRecycler.OnBottomCallback() {
        @Override
        public void onBottom() {
          Snackbar.make(recycler, "滚动到了底部", Snackbar.LENGTH_SHORT).show();
        }
    });
    
    

    结语

    代码非常简单,用起来也很方便。大家有问题的话,可以看下面的联系方式找到我,我们一起讨论。


    关于我

    • 微博:@安卓猴

      我的微博
    • 微信公众号:Android奇想录(android_amazing)

    扫描二维码关注公众号

    相关文章

      网友评论

      本文标题:自定义RecyclerView监听滑动到底部Bottom

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