写这篇文章的由衷是在项目里面遇到了这样的一个问题,使用recycleView,列表样式使用GridLayoutManager设置,再此基础上添加头部,如果只是一味的往下写,当做LinearLayoutManager来做,那么列表显示就有问题了,我的列表数据是五条

     for (int i = 0; i < 5; i++) {SpecialDetailBean bean = new SpecialDetailBean();bean.setTitle("凯迪拉克");list.add(bean);}

数据绑定

  GridLayoutManager mLayoutManager = new GridLayoutManager(this, 2);recyclerView.setLayoutManager(mLayoutManager);adapter = new SaleCarAdapter(this);recyclerView.setAdapter(adapter);

看图来了,看下图

第一张图我是要铺满上面的,这不是我想要的效果,查了一番,原来GridLayoutManager有这样一个函数setSpanSizeLookup(),重写getSpanSize(int position),根据源码的说明,他是返回adapter中每个item应该占有的位置,加上这个函数

    GridLayoutManager mLayoutManager = new GridLayoutManager(this, 2);recyclerView.setLayoutManager(mLayoutManager);mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {@Overridepublic int getSpanSize(int position) {switch (adapter.getItemViewType(position)) {case SaleCarAdapter.TYPE_NORMAL:return 1;//返回顶部一条数据default:return 2;//返回列表}}});adapter = new SaleCarAdapter(this);recyclerView.setAdapter(adapter);

正确的样式

adapter的代码

public static final int TYPE_HEAD = 100;public static final int TYPE_NORMAL = 108;private Context mContext;private List<SpecialDetailBean> bean = null;public SaleCarAdapter(Context context) {mContext = context;}@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {if (viewType == TYPE_HEAD) {final View view = LayoutInflater.from(mContext).inflate(R.layout.item_sale_head, parent, false);return new ItemViewHeadHolder(view);} else {final View view = LayoutInflater.from(mContext).inflate(R.layout.item_sale_layout, parent, false);return new ItemViewHolder(view);}}@Overridepublic void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {if (holder instanceof ItemViewHolder) {ItemViewHolder item = (ItemViewHolder) holder;if (bean != null) {item.tvCarDesc.setText(bean.get(position - 1).getTitle());}} else {}}public void setBean(List<SpecialDetailBean> mBean) {bean = mBean;}@Overridepublic int getItemViewType(int position) {if (position == 0) {return TYPE_HEAD;} else {return TYPE_NORMAL;}}@Overridepublic int getItemCount() {if (bean != null) {return 1 + bean.size();} else {return 1;}}public class ItemViewHolder extends RecyclerView.ViewHolder {@BindView(R.id.iv_car)ImageView ivCar;@BindView(R.id.tv_car_desc)TextView tvCarDesc;@BindView(R.id.tv_start_price)TextView tvStartPrice;@BindView(R.id.tv_discount)TextView tvDiscount;@BindView(R.id.tv_guidence_price)TextView tvGuidencePrice;public ItemViewHolder(View view) {super(view);ButterKnife.bind(this, view);}}public class ItemViewHeadHolder extends RecyclerView.ViewHolder {@BindView(R.id.iv_sale)ImageView ivSale;public ItemViewHeadHolder(View view) {super(view);ButterKnife.bind(this, view);}}

ok,成功搞定。

RecycleView 使用GridView样式列表添加头部相关推荐

  1. recycleview 使用详解,添加头部尾部,混合item,侧滑菜单,跳转到指定位置,实现九宫格布局

    添加头部尾部,混合item:https://blog.csdn.net/meixi_android/article/details/82256319 侧滑菜单:https://blog.csdn.ne ...

  2. Android 给RecyclerView添加头部和尾部

    之前我在GitHub上开源了一个可以实现RecyclerView列表分组的通用Adapter: GroupedRecyclerViewAdapter.也在博客上写了一篇专门介绍它的实现和使用的文章:& ...

  3. GridView中列表的“双击事件”

    GridView中列表的"双击事件" 模拟事例: 双击列表中的行弹出该行的详细信息 解决方案: 为每一行添加一个双击事件 为列表所在的区域添加双击事件 为列表所在的区域添加Mous ...

  4. RecyclerView的使用(二):添加头部和尾部

    前言 Recyclerview作为Android的常用控件之一,相信大家对它应该是十分熟悉了,不熟悉的朋友可以参考我之前发的文章 RecyclerView的基本使用,其中包括有单item及多Item的 ...

  5. 超实用BRVAH开源框架使用之添加头部尾部问题

    小白入坑,大佬轻喷~~ 参考: BRVAH官方使用指南(持续更新) Github地址 前言: BRVAH是一个强大的RecyclerViewAdapter开源库,代码简洁高效,优点如下: ·框架引入 ...

  6. vscode添加头部注释快捷键

    在vscode内安装扩展: 在settings.json文件内加入下面的代码:把"XXXX"换成自己喜欢的昵称. {"psi-header.changes-trackin ...

  7. ListView 添加头部 和尾部 布局 (addHeaderView 和 addFooterView)

    ListView 添加头部 和尾部 布局  其实很简单 ,listview 暴露的有方法addHeaderView 和 addFooterView 从源码里面可以看到, addHeaderView 和 ...

  8. iOS-UIWebView添加头部和尾部

    2019独角兽企业重金招聘Python工程师标准>>> 前言 项目中使用UIWebView显示本地或者是服务器上的页面很容易,但是仅限于显示页面,可控性并不高,如果有需要在头部和尾部 ...

  9. net中 css 控制 GridView 样式

    net中 css 控制 GridView 样式 .GridViewStyle {        border-right: 2px solid #A7A6AA;     border-bottom:  ...

  10. vscode如何添加头部注释、作者注释

    vscode如何添加头部注释.作者注释 Visual Studio Code是微软开发的编辑器, 目前国内使用的用的人是越来越多.那么vscode如何添加头部注释,让你的代码有很明显的标识呢? 第一步 ...

最新文章

  1. 图解Windows下开发Objective-C程序之一 - 搭建Objective-C开发环境
  2. C语言学习之有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中
  3. Sublime Text 4.0 4102 安装插件的问题
  4. 他,是数学天才,是多复变解析函数的创始人
  5. shellcode编写
  6. LAMP环境搭建过程中出现的问题——基于VM虚拟CentOS-5.6
  7. go build 无文件_Go学习_30_Golang代码性能分析工具
  8. JDK集合框架结构分析(二)
  9. Rust:阴阳谜题输出
  10. 遇到不适当的参数_高清兽用B超机参数调整——“增益”
  11. 如何成为一个架构师?
  12. 开源中文语音识别项目介绍:ASRFrame
  13. 员工符合签订无固定期限劳动合同的条件,这种情况单位有权不予续签吗?
  14. 《雨夜》 RocketMQ源码系列(一) NameServer 核心源码解析
  15. php pandoc,Pandoc 标记语言转化工具
  16. 【Golang】欲入此Go先看Go的基本语法
  17. .NET的那些事儿(9)——C# 2.0 中用iTextSharp制作PDF(基础篇)
  18. php stortm 老是闪退,pr加载界面闪退的原因是什么?
  19. 深入剖析斐波拉契数列
  20. 微型计算机原理及其接口技术,微机原理及接口技术

热门文章

  1. latex如何设置字体并加粗_LaTeX字体设置
  2. CVPR 2020评审结果放出,魏秀参博士教你如何rebuttal!!!
  3. Windows10添加英文输入法
  4. ADC0808确定地址及查询方式示例
  5. cad批量打印_「批量打印」CAD图纸批量输出PDF及预览与输出不一致解决办法
  6. 远程服务器spyder,spyder和远程ssh python解释器
  7. 电信基站大区对应表_铁塔基站直流电能表 直流计量表
  8. python图片验证码解决方案
  9. 下载kaggle数据集
  10. 建筑施工技术【14】