0°

RecyclerView添加Header和Footer

内容预览:
  • 大概的思路就是这样子,更多细节请看代码注释,下面是运行截图(由于不...~
  • 如何您想进技术群和大牛们交流,关注公众号在后台回复 “加群”,或者 “学...~
  • 推荐阅读 知识星球这里聚集了业界内的大牛,值得各位大牛的加入! 看完...~

始发于微信公众号: 程序员小乐

分享编程技能、互联网技术、生活感悟、打造干货分享平台,将总结的技术、心得、经验分享给大家,这里不只限于技术!值得你去关注,点击上方 蓝字 快速关注。本号支持 投稿!


  前言



过去的两天,在项目中,抛弃了ListView, 想试一试RecyclerView, 在用的过程中,遇到了一些问题,比如:如何为RecyclerView添加Header和Footer? 如何为RecyclerView添加分割线?如何为RecyclerView添加下拉刷新和上拉加载? 在今后的一段时间里,我会针对这几个问题,通过写简书的方式一一讲述, 今天为大家带来的是第一个问题的解决方法,如何为RecyclerView添加Header和Footer?在这之前,我想分享一下我对RecyclerView的认识:


 一 . 我眼中的RecyclerView



  • 过去的这一两年, RecyclerView的越来越引起了我们Android开发人员的注意,甚至很多人都说:ListView, GridView已经逐渐被RecyclerView替代, 最主要的原因就是RecyclerView的灵活性, 还有性能上的提升。那么也许有很多人会问:RecyclerView和ListView, GridView到底是什么关系呢?通过Android官方文档的一组截图告诉你:

RecyclerView添加Header和Footer

ListView的家族谱(继承结构)

RecyclerView添加Header和Footer

RecyclerView的家族谱(继承结构)


  • 通过上面的两个图可以发现, ListView继承自:AbsListView。(GirdView也是), RecyclerView直接继承了ViewGroup , 最后得出结论:RecyclerView是ListView的爷爷辈, 也就是RecyclerView是ListView的二爷, 所以从封装的层次上得出了为什么RecyclerView性能比ListView更好的原因, 因为封装的层次越高,查询执行的速度相对较慢,当然还有一个原因,RecyclerView中自带的Adapter中加入了Holder,强制要求开发人员使用,在ListView中,很多人都不懂使用Holder, 这也导致了使用ListView性能比较差。这也是RecyclerView性能提升的一个主要原因, 当然,封装的层越高越灵活,相对使用起来也相对难,很多方法都是通过自己去封装的,比如ListView中有addHeaderView(View view), addFooterView(View view)去添加自己的Header 和Footer, 但是在RecyclerView中没有,下面我将详细介绍:


  二 . 为RecyclerView添加Header和Footer



1、认识Header和Footer


通过下面简书的两张图,让你认识Header和Footer


RecyclerView添加Header和Footer

带Header的图


RecyclerView添加Header和Footer

带Footer的图


  • 通过上面的两张图,可以看到,Header和Footer很多情况下是辅助功能的,比如Header通常用于做广告,而Footer更多的是为了显示下拉加载更多作为一个可视化组件来显示加载情况,提升用户体验。


2、 通过代码来解析如何为RecyclerView添加Header和Footer

RecyclerView的使用和ListView的使用差不多,无非就是那三步:


第一,初始化RecyclerView;

第二,初始化数据,并且将数据通过Adapter装在到View中;

第三,通过setAdapter方法,将Adapter绑定到RecyclerView中。

下面直接上代码:通过代码注释的方式来讲解添加Header和Footer:


(1) 主布局layout_main.xml: 只是添加了一个RecyclerView而已


RecyclerView添加Header和Footer


(2)RecyclerView中ListView的Item布局list_Item.xml: 只是添加了一个TextView


RecyclerView添加Header和Footer


(3)HeaderView和FooterView的布局文件,也是一个TextView, 这里只贴出了HeaderView的布局,FooterView的布局文件和FooterView的一样:

HeaderView的布局文件: header.xml:

RecyclerView添加Header和Footer


好了, 布局文件到这里我们已经弄好了, 下面我们直接看MainActivity中的内容:


(4) MainActivity.java中的内容为:


RecyclerView添加Header和Footer

RecyclerView添加Header和Footer


从上面的代码中,我们可以看到,我们在MainActivity中做了两件事,一个是初始化RecyclerView相关的View, Adapter, data; 另一个是通过我们自定义的Adapter的setHeaderView()和setFooterView()方法为RecyclerView添加HeaderView和FooterView, 到这里,我们已经迫不及待的想知道MyAdapter中到底有什么东西, 直接上代码


(5) MyAdapter.java的代码


RecyclerView添加Header和Footer

RecyclerView添加Header和Footer

RecyclerView添加Header和Footer

RecyclerView添加Header和Footer

RecyclerView添加Header和Footer


从上面的MyAdapter类中,有setHeaderView()和setFooterView()两个方法,我们就是通过这两个方法从Activity将headerView和footerView传递过来的, 在Adapter中的onCreateViewHolder()方法中,利用getItemViewType()返回Item的类型(你这个Item是不是Header家的?还是Footer家的?或者是ListView家的?)根据不同的类型,我们创建不同的Item的View。大概的思路就是这样子,更多细节请看代码注释,下面是运行截图(由于不知道Linux下有什么好的GIF生成工具,只能截静态图,大家知道的话,可以推荐给我,谢谢各位大神):


RecyclerView添加Header和Footer

header


RecyclerView添加Header和Footer

footer


  总结



终于写完了,需要慢慢消化和吸收,这只是一种实现HeaderView和FooterView的方式,我们从这里看到,HeaderView和FooterView是直接从Activity中传递过Adapter的,我们也可以像ListView一样,我们只传递HeaderView和FooterView的数据过Adapter中,然后在Adapter的内部再新建不同的HeaderHolder和FooterHolder, 根据返回Item的类型,加载不同的Holder即可,具体的实现我就不多说了,大家可以去实现一下。通过截图,你会发现,RecyclerView中,每个Item之间竟然没有分割线,而且RecyclerView中也没有setDivider()这样的方法去设置分割线,因为RecyclerView灵活啊,所以也是要自定义的,其实很简单,下一篇文章我会带来如何为RecyclerView添加分割线,这篇就到此结束了,有不足之处,望大家多多指教,谢谢了。


如何您想进技术群和大牛们交流,关注公众号在后台回复 “加群”,或者 “学习” 即可

作者:右眼皮的爱

链接:http://www.jianshu.com/p/991062d964cf

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

RecyclerView添加Header和Footer—– 由   分享

如果您觉得不错,请别忘了分享到您的朋友圈让更多的人看到!! 您的举手之劳,就是对我最好的支持,非常感谢!

每日英文

It is not because of being great that brings you dreams. It is because of dream, you become a great man.

不是因为了不起,所以才有理想,而是因为有理想,才成为了不起的人。


乐乐有话说

一个人为什么要努力?努力是为了当你看到自己喜欢的东西时,不用担心自己的钱包,更不用顾虑别人的脸色。努力,跟你的性别无关,跟你单身与否无关,努力,是为了让自己更独立。你只有经济独立,才能人格独立,只有生活独立,才能思想独立。


RecyclerView添加Header和Footer


推荐阅读




知识星球
这里聚集了业界内的大牛,值得各位大牛的加入!

RecyclerView添加Header和Footer 

看完本文有收获?请转发分享给更多人
关注「杨守乐」,提升编程技能

【QQ技术群】279126311 []
【QQ技术群】484572225 [未]

以上就是:RecyclerView添加Header和Footer 的全部内容。

本站部分内容来源于互联网和用户投稿,如有侵权请联系我们删除,谢谢。
Email:[email protected]


0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论