写这篇文章的由衷是在项目里面遇到了这样的一个问题,使用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. 【VMCloud云平台】Demo应用搭建(二)
  2. html 鼠标移动3d视图,HTML5 鼠标悬停3D平面摇晃动效
  3. linux关机_Linux中shutdown,halt,poweroff,init 0区别
  4. builtins.TypeError: sequence item 0: expected a bytes-like object, str found
  5. underscore源码剖析之整体架构
  6. C - 数据结构实验之栈与队列三:后缀式求值
  7. Object -C self -- 笔记
  8. 文件的属性 计算机知识,计算机基础知识文件的属性(二)
  9. aws s3 獲取所有文件_Url从Amazon S3获取文件
  10. Ubuntu系统---C++之Eclipse IDE 编译器安装
  11. IDC预测:2021vCPE软硬件市场将达到30亿美元
  12. opencv3编程入门-毛星云
  13. Android数据库框架LitePal详解
  14. Xshell+Xftp 下载安装步骤
  15. Android源码下载repo以及repo init总结
  16. 提出现代计算机工作原理的科学家是谁,现代计算机之父是谁_计算机信息处理能力_计算机能自动工作原理(2)...
  17. 软件测试 之Web项目实战
  18. 怎么能看出一个人开车水平高低?
  19. 2019_Context-aware crowd counting
  20. 向量和矩阵的求导公式

热门文章

  1. 浅谈MyBatis持久层框架
  2. C语言 汇总笔记(小甲鱼:带你学C带你飞)
  3. 推荐10款最佳的App安全测试工具
  4. 史上最全安装Maven教程
  5. 【dubbo源码解析】--- dubbo的服务暴露+服务消费(RPC调用)底层原理深入探析
  6. 为什么算法工程师也叫调参狗?
  7. 自然语言处理NLP知识结构
  8. Java实现Excel数据导入数据库
  9. 全文检索Solr面试题集锦:项目实战VS理论知识
  10. Pytorch 报错 Python int too large to convert to C long