RecyclerView 头部添加布局 简单示例

前边说过了RecyclerView的使用,这时候可能满足不了我们的开发需求。list view 可以实现头部添加,那么RecyclerView 也一样可以实现。系统没有为我们提供源生的方法来实现这步骤; 这时候就需要来实现
这里我们的解决方案和网上你能搜到的大多数方案一样,是通过控制Adapter的itemType来设置的,思路就是根据不同的itemType去加载不同的布局。这时候只需要指定加载在item 的 第零位置即可 ;这时候我们我们模仿list view ,一样吧添加的布局写在activity 里,这时候布局要进入到适配器,就需要适配新设置一个方法来把布局传传递进来,有了这样的思路就可以去实现了;
在原有适配器的基础上,
1 定义两个常量,来为不同布局做标记,在定义一个view 来作为要添加的布局;

 View headView;
   static final int TYPE_HODE = 0;
    static final int TYPE_NOMAL = 1;

2 我们还需要添加一个方法,来供activity 调用,传入view
并且调用系统的 notifyItemInserted(); 让插入的位置在第 0 位
该方法在 notifyDataSetChanged();之前掉用

 public void setHeadView(View headView) {
        this.headView = headView;
        notifyItemInserted(0);//在position位置插入数据的时候更新
    }

3 因为是和list view 实现多布局一样, 所以我们需要重写 getItemViewType ();
在该方法返回不同布局样式(是我们做的标记) 默认为没添加头部

 @Override
    public int getItemViewType(int position) {
        if (headView == null) return TYPE_NOMAL;
        if (position == 0) return TYPE_HODE;
        return TYPE_NOMAL;
    }

4 为了方便我们后边使用,我们这里还需要 定义一个方法,来计算item 下标,因为添加了头部的布局,所以 position-1

 public int getRealPosition(RecyclerView.ViewHolder holder) {
        int position = holder.getLayoutPosition();
        return headView == null ? position : position - 1;
    }

4 为了满足添加头部布局,和没有添加头部布局可以使用同样的adapter
接下来就需要改造源来的适配器三个方法&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值