现在Android技术要求越来越高了,本人决定把学习的知识记在上,一来可以记录自己的学习历程,二来也可以更好的理清思路,理解原理。
今天要写的是如何给recyclerview添加头部和底部,Android5.0后谷歌用recyclerview替代了原先的listview,但是没有添加头部和底部的方法,分析listview的源码,找到设置adapter的方法,如下图:
我们关注上面的红色部分,可以看到如果用户设置了头部和底部,那么就对用户的adapter进行重新包装,设置一个新的adapter,HeaderViewListAdapter,让其去处理视图的显示逻辑,如果用户没有设置则用原来的adapter,我们再看listView添加头部的代码:
这里讲头部视图添加进来,传入新的adapter。我们再看HeaderViewListAdapter类主要关注构造方法和getView,getViewType方法:
构造方法:
构造方法里面主要是对头部和底部视图容器进行初始化
getViewType方法:
这个方法里面主要是处理了不同的视图,返回不同的viewtype常量,然后在getView方法里面渲染出来。
getView方法:
在getview方法中,分别处理了头部和底部以及其他视图。
分析完了listview的源码,那么我们模仿着给recyclerview添加头部和底部,项目结构如下图:
主要是两个类,一个HeaderViewRecyclerAdapter,一个是WrapRecyclerView
HeaderViewRecyclerAdapter主要是继承recyclerview的adapter重新封装。
WrapRecyclerView主要是继承recyclerView添加头部和底部,以及设置adapter的逻辑处理。对recyclerview二次封装。
HeaderViewRecyclerAdapter中的主要方法:
onBindViewHolder,根据不同情况绑定不同的viewholder
getItemViewType方法,返回不同视图的常量type
onCreateViewHolder方法里面根据不同的viewType返回不同的holder
上图是WrapRecyclerView的主要方法,仿listview源码添加头发和底部,设置adapter。
运行效果图:
源码地址:http://download.csdn.net/detail/u013453973/9820755