看懂android中的adapter适配器

2023-11-18

首先需要知道一共有4个文件:fragment类,adapter,fragment的布局文件,adapter中的item的布局文件

1,首先声明一个控件:RecyclerView

2,然后声明一个adapter类

3,在initView()上

//给RecyclerView控件设置一个布局
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));

//声明一个adapter
recyclerAdapter= new RecyclerAdapter();

//给RecyclerView控件设置一个adapter
recyclerView.setAdapter(recyclerAdapter);

//给RecyclerView控件设置样式
recyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
   @Override
   public void getItemOffsets(@NonNull Rect outRect,@NonNull View view,@NonNull RecyclerView parent,@NonNull RecyclerView.State state) {
       int topAndBottom = SizeUtils.dip2px(getContext(),4);
       int leftAndRight = SizeUtils.dip2px(getContext(),6);
       outRect.left = leftAndRight;
       outRect.right = leftAndRight;
       outRect.top = topAndBottom;
       outRect.bottom = topAndBottom;
}});

4,在initListener()上,这里记得在fragment类上需要实现adapter的点击事件

//给adapter设置点击事件
recyclerAdapter.setOnLeftItemClickListener(this);

5,给adapter上设置数据

//把得到的数据放到adapter类上实现
recyclerAdapter.setData(data);

6,在adapter类上

  1,onCreateViewHolder():设置每一条item的样式布局

  2,onBindViewHolder():在这里设置点击每一个item的点击事件

在这里会调用holder.setInData(dataBean):这是给adapter的内部类设置数据

//这个是给实现接口点击事件的方法
holder.itemView.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
      if(mItemClickListener != null) {
         mItemClickListener.onItemClick(dataBean);
      }
   }
});

  3,getItemCount():主要设置得到数据的数目

  4,interface OnListItemClickListener{}:提供一个接口给fragment实现点击事件

void onItemClick(IBaseInfo item);

  5,setOnListItemClickListener(OnListItemClickListener listener):在adapter上实现点击事件

  6,setData():这个是在fragment上调用的,获取fragment传递过来的数据,在第5步的recyclerAdapter.setData(data):这个方法上调用

  7,adapter的内部实现类

     1,在这里找到item布局的控件id

     2,通过setInData():把onBindViewHolder()的数据设置到item的布局上

7,【实现item的点击事件】在fragment类上实现implement XXXAdapter.OnListItemClickListener 

    @Override
    public void onItemClick(IBaseInfo item) {
        //列表内容被点击了
        LogUtils.d(this,"list item click --- > " + item.getTitle());
        handleItemClick(item);
    }

同时,在fragment上还要记得

//给适配器中列表的点击,设置点击方法
XXXAdapter.setOnListItemClickListener(this);

上面是对每一个item布局设置的

如果是list的,则不用这么麻烦

如果对我的其它文章有更多的兴趣,可以访问我的个人博客:uniqueho.xyz

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

看懂android中的adapter适配器 的相关文章

随机推荐

  • Request method ‘POST‘ not supported错误和解决方法

    最近使用VUE js开发中遇到了错误Request method POST not supported 字面意思上看是因为前后端没有统一使用POST方法 但是我在本地仔细检查了前端调用方法和后端处理方法 均没有发现有这个问题 最后我发现 问
  • Memcached Redis Membase性能测试对比分析

    最近在在调研分布式缓存 希望后面能够当前改进项目中缓存的使用 这个测试结果可能出乎大家的意料之外哦 测试结果对比分析 单次读写访问Memcached最快 Redis居中 Membase最慢 单次读写Membase和Redis速度比较接近 M
  • 计算机考试如何截屏,教你6种电脑截屏的小技巧-电脑怎么截图

    电脑截屏是我们经常要用到的技能 不仅操作简单而且非常实用 方法也有很多 下面小编总结了6种截屏技巧 供大家选择 分别是以下6种 1 搜狗输入法 2 浏览器 3 截屏软件 4 QQ ctrl ait A 和微信 alt A 5 附件截图工具
  • win10系统下安装Kafka 的详细步骤

    Win10 系统下要使用Kafka需要经过以下三个步骤 1 安装JDK 需要安装依赖java JDK 2 安装zookeeper 资源协调 分配管理 3 安装Kafka 一 安装 Java SE Development Kit 13 0 1
  • 【原创】ESXI6.7+ikuai爱快搭建软路由(非常详细)

    ESXI安装过程我就直接跳过了 这个网上教程多得是 先介绍一下我的测试环境 一台测试电脑CPU G5400 内存32G DDR4 硬盘960G的铠侠 SATA3接口的SSD 网卡 自带的瑞昱8168网卡 一块另外买的瑞昱8168网卡 两条网
  • Linux常见命令整理

    Linux 常用命令 基本命令掌握 磁盘命令 cd ll 文件夹 文件创建命令 mkdir touch 文件浏览 less 文件全盘查找 find 文件操作 cp mv rm 文件编辑 vi 压缩解压 tar 权限命令 其它命令 最终 安装
  • [Qt3d] 导出QtEntity为Obj格式(遍历QtEntity)

    原文链接 https www yuque com softdev qt txv1lx class Qui3DView private struct date struct QPointer
  • java.awt.Color类

    Color类概述 Color是用来封装颜色的 支持多种颜色空间 默认为RGB颜色空间 每个Color对象都有一个alpha通道 值为0到255 代表透明度 当alpha通道值为255时 表示完全不透明 当alpha通道值为0时 表示完全透明
  • Cordova环境搭建/win10下必备依赖环境配置(Android开发)

    Cordova环境依赖 1 win10系统 2 Java环境 3 Node环境 4 AndroidStudio 5 Ant 6 Gradle 安装node环境 1 使用node官网网址下载node包 最好使用稳定版本 https nodej
  • 从C过渡到C ++的3个理由

    几十年来 嵌入式软件工程师之间一直在争论他们应该使用C还是C 根据2020年嵌入式市场调查 在大多数情况下 微控制器制造商提供的软件都以C语言提供 实际上 有56 的嵌入式软件是用C语言编写的 但是 C 逐渐流行起来 大约23 的新嵌入式软
  • Java面向对象编程

    主机甲和乙已建立了TCP连接 甲始终以MSS 1KB大小的段发送数据 并一直有数据发送 乙每收到一个数据段都会发出一个接收窗口为10KB的确认段 若甲在t时刻发生超时时拥塞窗口为8KB 则从t时刻起 不再发生超时的情况下 经过10个RTT后
  • Ubuntu安装git

    使用 apt get install git 安装git 报错 这个错误信息通常表示您的系统上没有可用的 git 软件包 这可能是因为您的软件源列表中没有包含 git 软件包所在的软件源 或者您的软件源列表已经过期 解决 如果您使用的是 U
  • RuntimeError: Attempting to deserialize object on CUDA device 1 but torch.cuda.device_count() is 1.

    成功解决 RuntimeError Attempting to deserialize object on CUDA device 1 but torch cuda device count is 1 报错内容 程序在这一步报错 check
  • Android kotlin自定义自动换行LinearLayout

    目录 1 概述 2 实现步骤 3 kotlin自定义自动换行LinearLayout核心代码实现功能 3 1自定义LinearLayout
  • spring快速入门

    1 导入坐标
  • stack容器

    stack容器 1 stack 基本概念 概念 stack是一种先进后出 First In Last Out FILO 的数据结构 它只有一个出口 栈中只有顶端的元素才可以被外界使用 因此栈不允许有遍历行为 栈中进入数据称为 入栈 push
  • dll load failed: 找不到指定的模块_【已解决】“由于找不到xinput1_3.dll,无法继续执行代码”...

    许多小伙伴在玩游戏或者使用电脑的过程中 电脑突然提示 由于找不到xinput1 3 dll 无法继续执行代码 导致游戏等程序无法正常启动运行 并且导致电脑系统弹窗报错 那xinput1 3 dll丢失怎么修复呢 下面让小编手把手教你解决方法
  • CentOS7安装OpenStack(Liberty)

    1 安装yum源 yum install https buildlogs centos org centos 7 cloud x86 64 openstack liberty centos release openstack liberty
  • 百度智能云千帆大模型三连击:接入LLaMA2等33个模型、上线插件功能和103个Prompt模板

    作为全球首个一站式企业级大模型平台 百度智能云 千帆大模型平台 在提供包括文心一言在内的大模型服务及第三方大模型服务的同时 还提供大模型开发和应用的整套工具链 帮助企业解决大模型从训练到开发过程中的全链条问题 自2023年3月发布以来 千帆
  • 看懂android中的adapter适配器

    首先需要知道一共有4个文件 fragment类 adapter fragment的布局文件 adapter中的item的布局文件 1 首先声明一个控件 RecyclerView 2 然后声明一个adapter类 3 在initView 上