一个支持下拉自动加载的recycleview

原创 2015年11月19日 22:36:41
public class RecyclerViewOnScroll extends RecyclerView.OnScrollListener {
    RecyclerView.Adapter mMyadputer;
    LodeMoreCallBack mLodeMoreCallBack;
    int lastVisibleItem = 0;
    int firstVisibleItem = 0;


    public RecyclerViewOnScroll(RecyclerView.Adapter mMyadputer, LodeMoreCallBack mLodeMoreCallBack) {
        this.mMyadputer = mMyadputer;
        this.mLodeMoreCallBack = mLodeMoreCallBack;
    }


    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
        int totalItemCount = layoutManager.getItemCount();
        if (layoutManager instanceof LinearLayoutManager) {
            LinearLayoutManager linearLayoutManager = ((LinearLayoutManager) layoutManager);
            lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition();
            firstVisibleItem = linearLayoutManager.findFirstCompletelyVisibleItemPosition();
        } else if (layoutManager instanceof GridLayoutManager) {
            GridLayoutManager gridLayoutManager = ((GridLayoutManager) layoutManager);
            //通过LayoutManager找到当前显示的最后的item的position
            lastVisibleItem = gridLayoutManager.findLastVisibleItemPosition();
            firstVisibleItem = gridLayoutManager.findFirstCompletelyVisibleItemPosition();
        } else if (layoutManager instanceof StaggeredGridLayoutManager) {
            StaggeredGridLayoutManager staggeredGridLayoutManager = ((StaggeredGridLayoutManager) layoutManager);
            //因为StaggeredGridLayoutManager的特殊性可能导致最后显示的item存在多个,所以这里取到的是一个数组
            //得到这个数组后再取到数组中position值最大的那个就是最后显示的position值了
            int[] lastPositions = new int[((StaggeredGridLayoutManager) layoutManager).getSpanCount()];
            staggeredGridLayoutManager.findLastVisibleItemPositions(lastPositions);
            lastVisibleItem = findMax(lastPositions);
            firstVisibleItem = staggeredGridLayoutManager.findFirstVisibleItemPositions(lastPositions)[0];
        }


    }


    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
        //获取总的适配器的数量
        int totalCount = mMyadputer.getItemCount();
        Log.e("总的数目", totalCount + "");
        Log.e("滚动的状态", newState + "");
        //这个就是判断当前滑动停止了,并且获取当前屏幕最后一个可见的条目是第几个,当前屏幕数据已经显示完毕的时候就去加载数据
        if (newState == RecyclerView.SCROLL_STATE_IDLE && lastVisibleItem + 1 == mMyadputer.getItemCount()) {
            //回调加载更多
            mLodeMoreCallBack.LodeMore();
        }
    }
    //找到数组中的最大值


    private int findMax(int[] lastPositions) {


        int max = lastPositions[0];
        for (int value : lastPositions) {
            //       int max    = Math.max(lastPositions,value);
            if (value > max) {
                max = value;
            }
        }
        return max;
    }
}

XAdapter:支持下拉刷新加载和添加多个header和footer的RecyclerViewAdapter

github地址:XAdapterScreenshotshttps://github.com/7449/XAdapter/blob/master/xadapter.gifgradle compil...
  • oAiTan
  • oAiTan
  • 2017年01月13日 10:20
  • 572

使GridView支持下拉刷新和上拉加载

主要核心就是实现类似ListView的header和footer 项目地址:https://github.com/liaohuqiu/android-GridViewWithHeaderAndFoot...

支持下拉刷新和上划加载更多的自定义RecyclerView(仿XListView效果)

在项目更新的过程中,遇到了一个将XListView换成recyclerView的需求,而且更换完之后大体效果不能变,但是对于下拉刷新这样的效果,谷歌给出的解决方案是把RecyclerView放在一个S...

Recyclerview支持下拉刷新、上拉加载,包括线性布局、网格布局和 流布局

SwiperefreshRecyclerview支持下拉刷新、上拉加载的 Recyclerview,包括线性布局、网格布局和 流布局。只需要在adapter中绑定数据,其他的交给我,就是这么6。...

RecyclerView支持下拉刷新上划加载,多种布局样式。RV集成框架使用(一)

还在使用古老的Listview吗? 还在继承那个复杂的BaseAdapter吗? 还在给listview ADDHead,ADDfoot吗? 今天不用啦,我们只需使用SuperRefreshRe...

支持下拉刷新和上啦加载的SwipeRefreshLayout

一.概述 google提供的SwipeRefreshLayout只具有下拉刷新的效果,而我们平常的需求都是既要有下拉刷新又要支持上啦加载的.一个偶然的机会看一篇利用NestedScrolling...
  • totcw
  • totcw
  • 2017年04月05日 10:55
  • 253

支持下拉刷新、上拉加载的RecyclerView,基于PullToRefresh

首先我是使用 这篇文章http://blog.csdn.net/Mr_WangGang/article/details/46707441 提供的方法来实现的,感谢提供思路。 但是使用过程中,发现一个b...

TwinklingRefreshLayout 支持下拉刷新和上拉加载的 RefreshLayout,自带越界回弹效果,支持 RecyclerView,AbsListView,ScrollView,We

支持下拉刷新和上拉加载的 RefreshLayout,自带越界回弹效果,支持 RecyclerView,AbsListView,ScrollView,WebView...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个支持下拉自动加载的recycleview
举报原因:
原因补充:

(最多只允许输入30个字)