文档章节

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

Cundong
 Cundong
发布于 2015/11/09 17:50
字数 265
阅读 10981
收藏 12

介绍

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

截屏


© 著作权归作者所有

Cundong
粉丝 185
博文 28
码字总数 30973
作品 0
海淀
私信 提问
加载中

评论(5)

L
LamJeonhei
挺不错的库 博主为什么不放到maven方便添加呢?
m
mijo
大神,能不能解释一下 getItemViewType() 实现的原理,区分出viewType是 header 还是 footer,并且标示出它在对应列表中的位置??那块代码不太能理解,求大神指导。
z
zpc9527
大神,看到一定回复一下,这个怎么在fragment中使用啊
奋斗的土豆
这个我怎么添加依赖到我的项目!
huimieni
huimieni
下拉加载更多刷新后item重新排布,回滑出现重排动画是什么原因
滑动事件总结(刷新,加载更多,嵌套滑动)

下拉刷新 在Api21之前,ListView和GridView的使用相当普遍,包括下拉刷新我们也可以使用它,利用他的addHeaderView()和addFooterView()方法,或者使用父级中隐藏View的方式来实现; 在A...

卐字旗下的余晖
2016/06/07
155
0
Android开发操作案例分享!

Android开发操作案例分享! Android LRecyclerView 操作案例分享-实现下拉刷新、滑动到底部自动加载,一直想抽空写下这个开源项目www.lampbrother.net,但是各种原因没有抽时间,今天还是趁着...

小贱1991
2016/08/04
29
0
Android listview addHeaderView 和 addFooterView 详解

addHeaderView()方法:主要是向listView的头部添加布局 addFooterView()方法:主要是向listView的底部添加布局 需要注意的是添加布局的时候应该添加从父容器开始添加,而不能直接添加父容器中...

程序袁_绪龙
2015/08/05
2.1K
2
ListView,ExpandableListView等控件 元素过多导致其下方控件无法显示的解决

我在ExpandableListView下方放了一个TextView,但是当组全部展开,ExpandableListView的高度超过屏幕高度时,不管你怎么划屏幕,下面的TextView就是看不到,被隐藏了,ListView也有类似的问题,只要...

鉴客
2011/12/01
2.6K
0
欢乐的票圈重构之旅——RecyclerView的头尾布局增加

项目重构的Git地址:https://github.com/razerdp/FriendCircle 上集:欢乐的票圈重构之旅——RecyclerView的上下拉以及logo的联动 下集:欢乐的票圈重构——九宫格控件(上) 上集介绍 上集没...

2018/01/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
58分钟前
17
0
java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
今天
8
0
太全了|万字详解Docker架构原理、功能及使用

一、简介 1、了解Docker的前生LXC LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpa...

Java技术剑
今天
21
0
Wifiphisher —— 非常非常非常流氓的 WIFI 网络钓鱼框架

编者注:这是一个非常流氓的 WIFI 网络钓鱼工具,甚至可能是非法的工具(取决于你的使用场景)。在没有事先获得许可的情况下使用 Wifiphisher 攻击基础网络设施将被视为非法活动。使用时请遵...

红薯
今天
87
1
MongoDB 4 on CentOS 7安装指南

本教程为CentOS x86_64 7.x操作系统下,MongoDB Community x86_64 4.2(GA)安装指南。 安装方式一:yum repo在线安装 [此方式较为简单,官方推荐] Step1:新建MongDB社区版Yum镜像源。 # vim ...

王焱君
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部