Android 复杂首页搭建BaseMultiItemQuickAdapter,详解简单易学

2023-11-07

关于不同类型多布局的展示BaseMultiItemQuickAdapter详解


二  新篇章

对于Android 初学者来说,说到数据展示,相信大家对一定会想到ListView 或者 RecyclerView,但是简单的数据展示这个确实没毛病。当出现复杂数据需要多布局展示的时候,这个时候相信大部分人想到的都是各种嵌套 , 最常见的 是ScrollView , ListView 以及 RecyclerView 三者之间的 嵌套;当你嵌套的时候问题来了,最大的问题不外乎滑动事件冲突,以及滑动卡顿问题 ,这个时候要么去自定义 要么去重写方法,对于初学者来说是一件很头疼的事情,其实当你看Google官方文档的时候你会发现 当初在设计的时候并没有要开发者去嵌套使用,接下来我给大家介绍一种三方的框架 BaseMultiItemQuickAdapter
,希望能够帮助到Android  初学者!这是一个简单易懂使用的框架 

如果需要定义多个不同类型的布局,需要知道以下几点:
重写getItemViewType()方法,根据需求规则给出不同的type值。
在onCreateViewHolder()方法里面根据不同的type来创建不同的ViewHolder
在onBindViewHolder()里面根据不同holder的类型来赋予相对于的数据
如果有额外布局(如:头部尾部)需要修改getItemCount()方法的返回数量
多个不同的布局的实现
1.重写了getDefItemViewType()方法,其实也就是父类的getItemViewType()里面的方法,
2.type搞定了,接下来就是调用onCreateDefViewHolder()了,根据上面的type来创建不同的ViewHolder,
3.然后再接下来调用onBindDefViewHolder(),根据上面创建的ViewHolder的类型不同来进行相应的赋值。
添加头部和尾部

下面直接上代码:

 

MultipleItemQuickAdapter 类:

public class MultipleItemQuickAdapter extends BaseMultiItemQuickAdapter<MultipleItem, BaseViewHolder> implements View.OnClickListener {
    private String SUGGEST_DATE = "SUGGEST_DATE";
    private String SUGGEST_GOODS_DATE = "SUGGEST_GOODS_DATE";
    private String TIME_DATE = "TIME_DATE";
    private Context mContext;
    private HomeHeadResponse mHomeHeadResponse;
    private int page = 1;
    private NewsShopsItemAdapter itemClickAdapter;


    public MultipleItemQuickAdapter(Context context, List data) {
        super(data);
        this.mContext = context;
        addItemType(MultipleItem.ITEM_TYPE_1, R.layout.item_type_1);
        addItemType(MultipleItem.ITEM_TYPE_2, R.layout.item_type_2);
        addItemType(MultipleItem.ITEM_TYPE_3, R.layout.item_type_3);
        addItemType(MultipleItem.ITEM_TYPE_4, R.layout.item_type_4);
        addItemType(MultipleItem.ITEM_TYPE_5, R.layout.item_type_5);
        addItemType(MultipleItem.ITEM_TYPE_6, R.layout.item_type_6);
    }


    @Override
    protected void convert(BaseViewHolder helper, MultipleItem item) {
        switch (helper.getItemViewType()) {
            case MultipleItem.ITEM_TYPE_1:
                 i

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 复杂首页搭建BaseMultiItemQuickAdapter,详解简单易学 的相关文章

  • 六、Audio-ALSA架构中的codec

    一 codec简介 处理器如果既想 听到 外界的声音 又想向外界传达自己的 心声 那么就需要同时用到 DAC 和 ADC 这两款芯片 那是不是买两颗 DAC 和 ADC 芯片就行了呢 答案肯定是可以的 但是音频不单单是能出声 能听到就行 我
  • VC6 ”add files to project“功能失效的解决方案

    在Win7系统下 安装MS2007以后 VC6 0 add files to project 功能失效了 网上的资料表明 这是与MS2007不兼容导致的 其具体解决方案如下 1 到如下网址 http download microsoft c
  • 服务器硬件规格常用查看命令——磁盘相关命令

    smartctl smartctl是一个能够控制和监控磁盘的SMART Self Monitoring Analysis and Reporting Technology 自我监测 分析和报告技术 命令 使用方法 提示 使用该命令只能查看到
  • Apache Hop-使用介绍【持续完善中】

    文章目录 Pipelines 管道 Pipeline Editor 管道编辑器 TOOLBAR Create a Pipeline 创建管道 How pipelines work 管道如何工作 Concepts 概念 Create a pi
  • 计算机组成原理(七)——总线BUS

    总线 BUS 总线 BUS 概念 连接计算机系统各个功能部件的信息传输线 是各个部件共享数据及信息的传输介质 用来连接计算机系统各功能部件而构成一个完整系统 实际上是一组信号线 广义地讲 任何连接两个以上电子元器件的导线都可以称为总线 计算
  • 微服务系列文章之 Redisson实现分布式锁

    一 高效分布式锁 当我们在设计分布式锁的时候 我们应该考虑分布式锁至少要满足的一些条件 同时考虑如何高效的设计分布式锁 这里我认为以下几点是必须要考虑的 1 互斥 在分布式高并发的条件下 我们最需要保证 同一时刻只能有一个线程获得锁 这是最
  • 【go】异步任务解决方案Asynq实战

    文章目录 一 Asynq介绍 二 所需工具 三 代码示例 四 Reference 一 Asynq介绍 Asynq 是一个 Go 库 一个高效的分布式任务队列 Asynq 工作原理 客户端 生产者 将任务放入队列 服务器 消费者 从队列中拉出
  • openEuler之RPM软件包管理命令

    RPM命令介绍 安装软件 rpm i xx rpm 卸载软件 rpm e xx rpm 升级形式安装 rpm U xx rpm 常用参数 v 显示详细信息 h 显示文本进度条 1 安装软件 1 下载RPM包 root localhost l
  • K8s企业版多节部署

    K8s企业版多节部署 实验步骤 K8s的单节点部署 master2节点部署 负载均衡部署 使用双机热备 k8s网站页面 实验环境 使用Nginx做负载均衡 lb01 192 168 217 136 24 CentOS 7 5 lb02 19
  • DLL+资源模块切换

    MFC程序中存在一个模块状态 Module State 的问题 也就是资源重复的问题 此处的术语模块是指一个可执行程序 或指其操作不依赖于应用程序的其余部分但使用MFC运行库的共享副本的一个DLL 或一组DLL 我们所创建的MFC DLL就
  • VS2019配置opencv详细图文教程和测试代码

    摘要 vs2019新鲜出炉 配置opencv又有哪些不一样呢 这个教程将会一步一步的教你如何配置opencv和跑动opencv一个简单的项目 测试代码请在原文找到 转发备注原文链接 https xygeng cn post 151 html
  • 机器学习数据获取与处理

    数据获取与处理 以CV任务为主 课程目的 数据的获取途径 数据处理与标注 数据预处理方法 模型训练评估 一 数据集的获取 通常 我们的数据来源于各个比赛平台 首先是AIStudio中的数据集 大部分经典数据集例如百度AI Studio Ka
  • 小程序用户隐私保护协议纯文案修改指引

    目录 一 修改缘由 二 官方指引 三 填写入口 一 修改缘由 小程序提交审核不通过 审核失败原因 存在平台未允许的服务内容 违反 微信小程序平台运营规范常见拒绝情形3 4 详情描述 你好 你的小程序涉及收集 使用和存储用户信息 请增加 用户
  • C++模板的特化(specialization)和偏特化(partial specialization)

    C 模板的特化及偏特化 类模板全特化 对类中的某个成员函数进行特化处理 类模板的偏特化 个数偏特化 范围偏特化 函数模板全特化 函数模板偏特化 模板函数和模板类有的时候可能需要对传入的不同类型进行不同的处理 比如说有的模板传入int或dou
  • 【Linux】进程间通信-命名管道FIFO

    命名管道概述 如果我们要在不相关的进程间交换数据 那么使用FIFO文件将会十分方便 FIFO文件通常也称为命名管道 named pipe 命名管道是一种特殊类型的文件 它在文件系统中以文件名的形式存在 创建命名管道 创建命名管道一般有两种方
  • Unity打包的apk在安卓4.4.2盒子上碰到的问题

    项目场景 Unity开发的项目需要在安卓4 4 2盒子上运行 问题描述 1 会出 从顶部向下滑动即可退出全屏模式 的弹框 这是android4 4的一个特性 叫做沉浸模式 Full screen Immersive Mode 当app启用该
  • 要庆幸,找到了自己-------Day73

    跟朋友聊了大半晚上 看看时间 已经要睡觉的点了 坐下来写这篇文章 只为了感念下曾经的自己 如今的自己 未来的自己 就那么迷茫了那么多年 也坚守了那么多年 如果有方法可以做到 那为何不去努力呢 如果没有人帮 那就自己去克服它 那个守望的孩子就
  • 使用Nginx+Keepalived组建高可用负载平衡Web server集群

    一 首先说明一下网络拓扑结构 1 Nginx 反向代理Server HA Nginx master 192 168 1 157 Nginx backup 192 168 1 158 虚拟IP统一为 192 168 1 110 2 web服务
  • 信号和槽的绑定

    为了更加深入的理解信号和槽的绑定 我们使用以下2种方法来实现绑定 比如我们在QT degisnger界面中添加一个label控件和horizontalScrollBar控件 我们想实现 拖动horizontalScrollBar进度条 la

随机推荐

  • 使用STM32组建基于LoRa的环境监测系统

    文章目录 一 前言 二 介绍 三 硬件连接 1 系统框架 2 中心网关的连接 3 传感器节点1的连接 4 传感器节点2的连接 四 网关程序 1 主程序设计 2 LoRa程序 3 串口1程序 4 LCD显示程序 五 传感器节点程序 1 传感器
  • hexo+git搭建个人博客

    前言 喜欢写 Blog 的人 会经历三个阶段 第一阶段 刚接触 Blog 觉得很新鲜 试着选择一个免费空间来写 第二阶段 发现免费空间限制太多 就自己购买域名和空间 搭建独立博客 第三阶段 觉得独立博客的管理太麻烦 最好在保留控制权的前提下
  • JUC三连问

    1 进程和线程的区别 1 进程是资源分配的基本单位 线程是程序执行的最小单位 2 一个进程包括多个线程 3 每个进程都有自己的内存和资源 一个进程中的线程会共享这些内存和资源 每个线程都有单独的栈内存 和寄存器 2 并行和并发的区别 并行指
  • java 数据结构----------堆栈和队列

    队列的基本概念 队列 简称队 也是一种特殊的线性表 队列的数据元素以及数据元素间的逻辑关系和线性表完全相同 差别是线性表允许在任意位置插入和删除 而队列只允许在一端进行插入操作而在另一端进行删除操作 队列中允许插入操作的一端称为队尾 允许进
  • AutoConfigurationImportSelector自动导入过程分析

    AutoConfigurationImportSelector AutoConfigurationImportSelector 类实现 DeferredImportSelector接口 在项目启动过程中 会自动调用其 selectImpor
  • html input框的样式修改

    在html中 往往我们需要修改input中的placeholder默认文字的样式 在这个时候主要用到 在input框中有时想将输入的字和placeholder设为不同的颜色或其它效果 这时就可以用以下代码来对placeholder进行样式设
  • 基数排序C/C++代码实现

    链式基数排序 分配类排序不需要比较关键字的大小 它 是根据关键字中各位的值 通过对待排序记录进行若干趟 分配 与 收集 来实现排序的 是一种 借助于多关键字排序的思想对单关键字排序的方法 基数排序 RadixSorting 是典型的分配类排
  • Tomcat配置与优化(内存、并发、管理)

    一 JVM内存配置优化 在开发当中 当一个项目比较大时 依赖的jar包通常比较多 我们都知道 在应用服务器启动时 会将应用引用到的所有类通过ClassLoader依次全部加载到内存当中 Java的逻辑内存模型大致分为堆内存 栈内存 静态内存
  • 10.机器学习sklearn-------手写数字识别实例

    1 概念介绍 图像识别 Image Recognition 是指利用计算机对图像进行处理 分析和理解 以识别各种不同模式的目标和对像的技术 图像识别的发展经历了三个阶段 文字识别 数字图像处理与识别 物体识别 机器学习领域一般将此类识别问题
  • java作业-----方法重载

    满足方法重载的条件 1 方法名相同 2 参数类型不同 参数个数不同 参数类型的顺序不同 同时 方法的返回值不作为方法重载的判断条件 转载于 https www cnblogs com xinshngqi p 11599814 html
  • cmd 复制文件夹,包括文件夹本身,xcopy复制 指定目录,选定目录复制

    cmd 复制文件夹 包括文件夹本身 或者包括目录本身 或者xcopy复制 指定目录 我们发现 xcopy好像没这个功能 但是可以间接实现选定的目录拷贝 举例 我有个目录 a c a 要复制到 d盘 先第一步 cd d mkdir a xco
  • 整数对最小和

    题目 整数对最小和 输入描述 输入两行整形数组array1 array2 每行首个数字为数组大小size 0
  • C++浅拷贝和深拷贝——使用(代码演示篇)

    浅拷贝 普通类型的成员变量 深拷贝 成员变量是不是有指针类型 数组类型或者其他类的引用的时候 深拷贝 代码演示 define CRT SECURE NO WARNINGS include
  • 使用Python开发一个恐龙跑跑小游戏,玩起来

    相信很多人都玩过 chrome 浏览器上提供的恐龙跑跑游戏 在我们断网或者直接在浏览器输入地址 chrome dino 都可以进入游戏 今天我们就是用 Python 来制作一个类似的小游戏 素材准备 首先我们准备下游戏所需的素材 比如恐龙图
  • k8s flannel vxlan流量抓包分析

    Flannel Vxlan抓包 对于 Kubernetes 集群中的 Pod 由于容器内不便于抓包 通常视情况在 Pod 数据包经过的 veth 设备 docker0 网桥 CNI 插件设备 如 cni0 flannel 1 etc 及 P
  • cms垃圾收集器是如何进行垃圾回收的

    文章目录 CMS 垃圾回收器 核心垃圾回收过程 完整垃圾回收过程 阶段一 初始标记 阶段二 并发标记 Concurrent Mark 阶段三 并发预清理阶段 阶段四 可终止的预处理 阶段五 重新标记 阶段六 并发清理 阶段七 并发重置 CM
  • Lattice FPGA 开发工具Diamond使用流程总结——安装

    Lattice的芯片价格便宜 功耗低 最近项目要用 先来一份开发使用流程 软件安装 加载软件包 如下 下载安装包后 点击Diamond exe 文件 进入安装对话框 逐步点击YES或NEXT 完成路径设置等步骤 如下 到达产品加载选项页面
  • es集成SpringCloud

    es全文检索 feign 集成SpringCloud的使用 1 es的使用 1 1 导包 1 2 es的配置文件 application yml 1 3 创建CourseDoc 1 4 创建CourseDocRepository 1 5 普
  • 基于ubuntu操作系统下的Qt的安装

    1 首先下载安装包 进入官网下载地址 http download qt io 如图所示 顺带说说目录结构 archive 各种 Qt 开发工具安装包 新旧都有 可以下载 Qt 开发环境和源代码 community releases 社区定制
  • Android 复杂首页搭建BaseMultiItemQuickAdapter,详解简单易学

    关于不同类型多布局的展示BaseMultiItemQuickAdapter详解 二 新篇章 对于Android 初学者来说 说到数据展示 相信大家对一定会想到ListView 或者 RecyclerView 但是简单的数据展示这个确实没毛病