RecycleView添加头部和尾部

来源:互联网 发布:php网站整站源码下载 编辑:程序博客网 时间:2024/06/05 17:31

一,前提

RecycleView和ListView很相似,但是RecycleView没有像ListView那样直接添加头部和尾部的方法,这就要自定义适配器来添加头部和尾部方法。
在RecycleView依赖的适配器中,无论是适配器还是ViewHolder,源码都存在RecycleView的匿名内部类,相对于ListView,RecycleView内置多级缓存,RecycleViewPool(线程角度,理解成类似线程池的东西,就是多个recycleView可以公用一个View),viewHolder(已经实现了复用,相对于ListView的BaseAdapter中getView方法需要开发者自己引入复用问题方便很多)等等

public ViewHolder onCreateViewHolder(ViewGroup parent,int viewType)

public void onBindViewHolder(ViewHolder holder,int position)

以前的BaseAdapter中,所有的视图加载,数据绑定和复用,都需要直接在getView里面进行操作,onCreateViewHolder负责视图加载并且内部完成复用,onBindViewHolder负责数据绑定并且内部完成一系列的缓存机制满足视图层与逻辑层分离,典型的mvp模式

二,RecycleView的头部和尾部实现

public int getItemViewType() 这个方法是执行onCreateViewHolder(ViewGroup parent,int viewType)前调用,目的是为了根据不同的viewType创建视图,那么我们可以通过在创建视图前对viewType进行判断,是否添加头部或者创建头部。


三,代码实现


首先要定义标识,为了区分到底是头部,尾部还是正常列。
其次就是getItemViewType(int position)返回类型

接着在onCreateViewHolder(ViewGroup parent,int viewType)来创建视图

添加头部的代码如下:

效果图:

核心思想就是如此。
github上demo:https://github.com/luguian/RecycleDemo/tree/master


原创粉丝点击