zoukankan      html  css  js  c++  java
  • RecyclerView 上拉加载下拉刷新

     RecyclerView 上拉加载下拉刷新

     <android.support.v4.widget.SwipeRefreshLayout
            android:id="@+id/teach_swipe"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <android.support.v7.widget.RecyclerView
                android:id="@+id/rv_recycler_view"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
        </android.support.v4.widget.SwipeRefreshLayout>
    public class RecyclerOnScrollListener extends RecyclerView.OnScrollListener {
        private LinearLayoutManager layoutManager;
        private LoadMoreData loadMoreData;
    
        public RecyclerOnScrollListener(LinearLayoutManager layoutManager, LoadMoreData loadMoreData) {
            this.layoutManager = layoutManager;
            this.loadMoreData = loadMoreData;
        }
    
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            int lastVisibleItem = layoutManager.findLastVisibleItemPosition();
            int totalItemCount = layoutManager.getItemCount();
            //dy>0表示向上滑动
            //lastVisibleItem >= totalItemCount - 2表示剩下两个
            if (lastVisibleItem >= totalItemCount - 2 && dy > 0) {
                loadMoreData.loadMore();
            }
        }
    
        public interface LoadMoreData {
            void loadMore();
        }
    }

     核心代码片段:------------------

     //下拉刷新
            mSwipeRefresh = (SwipeRefreshLayout) findViewById(R.id.teach_swipe);
            mSwipeRefresh.setSize(1);
            mSwipeRefresh.setColorSchemeColors(Color.RED, Color.GREEN);
            mSwipeRefresh.setProgressBackgroundColorSchemeResource(R.color.colorAccent);
            mSwipeRefresh.setOnRefreshListener(this);
    
     @Override
        public void onRefresh() {
            indexPage = 1;
            getData();
            mHandler.sendEmptyMessageDelayed(UPDATE, DELAY_TIME);
        }
    
    //上拉加载
            mRecyclerView.addOnScrollListener(new RecyclerOnScrollListener(layoutManager, new RecyclerOnScrollListener.LoadMoreData() {
                @Override
                public void loadMore() {
                    indexPage++;
                    getData();
                }
            }));
  • 相关阅读:
    【转】JavaScript ArrayBuffer浅析
    【转】JS中的Blob对象
    javascript BLOB 图片预览
    生活小技巧:Excel中PMT函数的使用
    小知识:TFA收集日志报错空间不足
    idea 新手入坑操作指南
    【转】Error type 3 类型错误,Error: Activity class {} does not exist.Error while Launching activity解决方法
    C#批量修改文件后缀名
    零基础入门Unity
    UE4户外森林场景全流程教学
  • 原文地址:https://www.cnblogs.com/shen-hua/p/5828422.html
Copyright © 2011-2022 走看看