zoukankan      html  css  js  c++  java
  • RecyclerView 监听滑动条滚动事件触发load more

    //倒数第几个开始加载
        private int mCountDown = 1;
        //上一次加载点 所在recyclerview 中的位置
        private int mExLoadPos = -1;
    
        private OnLoadMore mOnLoadMore;
    
    
        private LinearLayoutManager mLinearLayoutManager;
    
        public EndlessRecyclerOnScrollListener(LinearLayoutManager linearLayoutManager, OnLoadMore onLoadMore) {
            this.mLinearLayoutManager = linearLayoutManager;
            mOnLoadMore = onLoadMore;
        }
    
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
    
            int loadPos = recyclerView.getAdapter().getItemCount() - mCountDown;
            //最后一个可见视图在 recyclerview  中的位置
            int lvvPos = mLinearLayoutManager.findLastVisibleItemPosition();
    //        System.out.println("last:" + mExLoadPos + " loadpos:" + loadPos + " lvvPos:" + lvvPos + " dy:" + dy);
            //当指定 加载点视图 小于等于最后可见视图,且 向下滑动; 加载机会
            if (dy > 0 && loadPos <= lvvPos) {
                doLoadMore(loadPos);
            }
    
        }
    
        private synchronized void doLoadMore(int loadPos) {
            if (mExLoadPos != loadPos) {
                //如果上一次加载点 和本次加载点不同,则可以加载,含括 lastloadpos > loadpos && lastloadpos < loadpos
    //            System.out.println("start load more");
                mExLoadPos = loadPos;
                mOnLoadMore.onLoadMore();
            }
        }
    
        public interface OnLoadMore {
            void onLoadMore();
        }
    
        public int getmCountDown() {
            return mCountDown;
        }
    
        public void setmCountDown(int mCountDown) {
            this.mCountDown = mCountDown;
        }

    主要用于监听竖直方向滑动事件,当达到设定值  CountDown 时 触发 load more 事件,多用于加载更多内容

  • 相关阅读:
    Educational Codeforces Round 86 (Rated for Div. 2)
    第十六届东南大学大学生程序设计竞赛(春、夏季)
    Codeforces Round #643 (Div. 2)
    [P3384] 【模板】轻重链剖分
    [BJOI2012] 连连看
    [CF1349C] Orac and Game of Life
    Codeforces Round #641 (Div. 2)
    [TJOI2018] 数学计算
    [CF1157D] N Problems During K Days
    [CF1163C1] Power Transmission (Easy Edition)
  • 原文地址:https://www.cnblogs.com/fantasy-es/p/4623533.html
Copyright © 2011-2022 走看看