RecyclerView封装Adapter之添加头部和底部视图

本文介绍如何在RecyclerView的Adapter中添加头部和底部视图,通过定义不同视图类型和覆写相关方法来实现。内容包括理论分析、代码实现和使用方式。适合作为Android开发者的参考。
摘要由CSDN通过智能技术生成

RecyclerView封装Adapter之添加头部和底部视图

转载请标明出处:
http://blog.csdn.net/lisdye2/article/details/52674879
本文出自:【Alex_MaHao的博客】
项目中的源码已经共享到github,有需要者请移步【Alex_MaHao的github】

ListView中已经自带了添加头布局和添加底部布局的方法,但是在RecyclerView中,却没有默认实现,这导致在实现一些特殊布局中不是那么的方便,本篇博客将通过封装Adapter方式添加头部和底部布局。

首先看一下实现效果

这里写图片描述

在阅读本篇博客之前,推荐阅读上一篇博客 RecyclerView 封装Adapter之BaseRecyclerAdapter

理论分析

在实现的过程中,我们首先想到的便是复用的问题,如果对于ListViewRecylerView掌握的还可的话,知道在一个条目显示时候,会复用之前已经隐藏的条目。如果添加头部或者底部的视图,他的样式肯定适合我们普通显示的条目是不同的,这时候,复用势必会抛出错误,那么如何解决呢?

细心的同学会发现,在创建RecyclerView.Adapter时,其中的一个方法有些特别public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType),第一个参数是父控件,第二个参数,从参数的命名山可以理解为视图的类型,关键便就在此,我们可以根据viewType的值不同,构造不同的ViewHoder。 既然能够获取,肯定有指定的地方,继续寻找,发现了下面的方法public int getItemViewType(int position),根据索引值返回对应条目的类型。那么,一切都捋顺了。思路如下:

  • 根据public int getItemViewType(int position),定义头部,底部,正常条目的常量,根据索引值进行返回。
  • public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType)中,通过viewType的不同值创建不同的ViewHolder.

代码实现

定义变量,添加头部布局和底部布局

首先,从简单的开始实现,如下


public abstract class BaseRecycleAdapter<T> extends RecyclerView.Adapter<BaseRecycleAdapter.BaseViewHolder> {
   

 // 头部控件
    private View mHeaderView;

    // 底部控件
    private View mFooterView;


    private boolean isHasHeader = false;

    private boolean isHasFooter = false;


   /**
     * 添加头部视图
     * @param header
     */
    public void setHeaderView(View header){
        this.mHeaderView = header;
        isHasHeader = true;
        notifyDataSetChanged();
    }

    /**
     * 添加底部视图
     * @param footer
     */
    public void setFooterView(View footer){
        this.mFooterView = footer;
        isHasFooter = true;
        notifyDataSetChanged();
    }


}

上面的代码都很简单,设置头部和底部布局,修改对应的标志。

定义不同的视图类型,用以确定viewType的值

   // item 的三种类型
    public static final int ITEM_TYPE_NORMAL = 0X1111; // 正常的item类型
    public static final int ITEM_TYPE_HEADER = 0X1112; // header
    public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值