支持addHeaderView、 addFooterView、分页加载数据的RecyclerView

原创
2015/11/09 17:50
阅读数 1.3W

介绍

HeaderAndFooterRecyclerView是支持addHeaderView、 addFooterView、分页加载数据的RecyclerView。

它可以对 RecyclerView 控件进行拓展,给RecyclerView增加HeaderView、FooterView,并且不需要对你的Adapter做任何修改。

同时,通过修改FooterView State,可以动态为FooterView赋予不同状态(加载中、加载失败、滑到最底等),可以实现RecyclerView分页加载数据时的loading/theEnd/NetWorkError效果。

项目地址

https://github.com/cundong/HeaderAndFooterRecyclerView

使用

  • 添加HeaderView、FooterView

        mHeaderAndFooterRecyclerViewAdapter = new HeaderAndFooterRecyclerViewAdapter(mDataAdapter);
        mRecyclerView.setAdapter(mHeaderAndFooterRecyclerViewAdapter);

        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));        //add a HeaderView
        RecyclerViewUtils.setHeaderView(mRecyclerView, new SampleHeader(this));        //add a FooterView
        RecyclerViewUtils.setFooterView(mRecyclerView, new SampleFooter(this));
  • LinearLayout/GridLayout/StaggeredGridLayout布局的RecyclerView分页加载

mRecyclerView.addOnScrollListener(mOnScrollListener);
private EndlessRecyclerOnScrollListener mOnScrollListener = new EndlessRecyclerOnScrollListener() {        @Override
        public void onLoadNextPage(View view) {            super.onLoadNextPage(view);            LoadingFooter.State state = RecyclerViewStateUtils.getFooterViewState(mRecyclerView);            if(state == LoadingFooter.State.Loading) {                Log.d("@Cundong", "the state is Loading, just wait..");                return;
            }

            mCurrentCounter = mDataList.size();            if (mCurrentCounter < TOTAL_COUNTER) {                // loading more
                RecyclerViewStateUtils.setFooterViewState(EndlessLinearLayoutActivity.this, mRecyclerView, REQUEST_COUNT, LoadingFooter.State.Loading, null);
                requestData();
            } else {                //the end
                RecyclerViewStateUtils.setFooterViewState(EndlessLinearLayoutActivity.this, mRecyclerView, REQUEST_COUNT, LoadingFooter.State.TheEnd, null);
            }
        }
    };

截图

  • 添加HeaderView、FooterView

截屏

  • 支持分页加载的LinearLayout布局RecyclerView

截屏

  • 支持分页加载的GridLayout布局RecyclerView

截屏

  • 支持分页加载的StaggeredGridLayout布局RecyclerView

截屏


展开阅读全文
打赏
7
13 收藏
分享
加载中
挺不错的库 博主为什么不放到maven方便添加呢?
2017/02/03 17:17
回复
举报
大神,能不能解释一下 getItemViewType() 实现的原理,区分出viewType是 header 还是 footer,并且标示出它在对应列表中的位置??那块代码不太能理解,求大神指导。
2017/01/22 16:24
回复
举报
大神,看到一定回复一下,这个怎么在fragment中使用啊
2016/07/08 15:14
回复
举报
这个我怎么添加依赖到我的项目!
2016/06/27 12:00
回复
举报
下拉加载更多刷新后item重新排布,回滑出现重排动画是什么原因
2016/03/29 10:27
回复
举报
更多评论
打赏
5 评论
13 收藏
7
分享
返回顶部
顶部