前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自定义RecyclerView监听滑动到底部Bottom

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

作者头像
GitOPEN
发布2019-01-29 10:06:48
2K0
发布2019-01-29 10:06:48
举报

前言

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

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

预览图

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

SuperRecycler.java代码:

代码语言:javascript
复制
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();
    }

}

使用方法

代码语言:javascript
复制
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();
    }
});

结语

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017/01/07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 预览图
      • SuperRecycler.java代码:
        • 使用方法
          • 结语
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档