关于Adapter数据适配器

2023-10-26

适配器
什么是适配器:Android适配器是数据和视图之间的桥梁,以便于数据在View上显示。适配器就像显示器,把复杂的东西按人可以接受的方式来展现。

Adapter数据适配器将各种数据以合适的形式绑定到控件上 像listview, gridview, spinner 等等等控件 都会用到Adapter绑定数据

三种Adapter

ArrayAdapter:支持泛型操作,最简单的一个Adapter,只能展现一行文字

SimpleAdapter:同样具有良好扩展性的一个Adapter,可以自定义多种效果

BaseAdapter:抽象类,实际开发中我们会继承这个类并且重写相关方法,用得最多的一个Adapter

1.ArrayAdapter(只能显示单一的TextView)

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </ListView>
</LinearLayout>

java文件

public class MainActivity extends AppCompatActivity {

    private String[] data = {"aa","bb","cc","dd","ee","ff","gg"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                MainActivity.this,android.R.layout.simple_expandable_list_item_1,data);
        ListView listView = (ListView) findViewById(R.id.list_view);
        listView.setAdapter(adapter);
    }
}

    }
}

运行效果

在这里插入图片描述

2.SimpleAdapter (可以显示多个控件)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </ListView>
</LinearLayout>

样式

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <ImageView
        android:id="@+id/iv_pic"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:src="@mipmap/ic_launcher"
        android:layout_margin="10dp"/>
    <LinearLayout
        android:id="@+id/ll_item"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="80dp">
        <TextView
            android:id="@+id/tv_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="ABC"
            android:textSize="24sp"
            android:layout_marginTop="10dp"/>
        <TextView
            android:id="@+id/tv_2"
            android:text="qwertyuiop"
            android:textSize="24dp"
            android:layout_marginTop="5dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
</LinearLayout>

java文件

public class MainActivity extends Activity{

    private List<Map<String,Object>> list;
    private SimpleAdapter adapter;
    private ListView listView;

    private String[] ABC = {"ABC","DEF","GHI"};
    private String[] qwe ={"qwertyuiop","asdfghjkl","zxcvbnm"};
    private int[] imageView = {R.mipmap.ic_launcher,R.drawable.user_icon,R.drawable.pwd_icon};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.list_view);
        
        list = new ArrayList<>();
        for(int i = 0;i < ABC.length;i++){
            Map<String,Object> map =new HashMap<>();
            map.put("img",imageView[i]);
            map.put("ABC",ABC[i]);
            map.put("qwe",qwe[i]);
            list.add(map);
        }
        adapter = new SimpleAdapter(MainActivity.this,list,R.layout.item
                ,new String[]{"img","ABC","qwe"}
                ,new int[]{R.id.iv_pic,R.id.tv_1,R.id.tv_2});
        listView.setAdapter(adapter);
    }
}

运行效果
在这里插入图片描述

3.BaseAdapter(自定义适配器)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </ListView>
</LinearLayout>

样式

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <ImageView
        android:id="@+id/iv_pic"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:src="@mipmap/ic_launcher"
        android:layout_margin="10dp"/>
    <LinearLayout
        android:id="@+id/ll_item"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="80dp">
        <TextView
            android:id="@+id/tv_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="ABC"
            android:textSize="24sp"
            android:layout_marginTop="10dp"/>
        <TextView
            android:id="@+id/tv_2"
            android:text="qwertyuiop"
            android:textSize="24dp"
            android:layout_marginTop="5dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
</LinearLayout>

Sample类

public class Sample {

    private String ABC;
    private String qwe;
    private int imageId;

    public Sample(String ABC, String qwe,int imageId){
        this.ABC = ABC;
        this.qwe = qwe;
        this.imageId = imageId;
    }

    public String getABC(){
        return ABC;
    }

    public String getQwe(){
        return qwe;
    }

    public int getImageId(){
        return imageId;
    }
}

SampleAdapter

public class SampleAdapter extends ArrayAdapter<Sample> {

    private int resourceId;

    public SampleAdapter(Context context, int textViewResourceId, List<Sample> object){
        super(context,textViewResourceId,object);
        resourceId = textViewResourceId;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent){
        Sample sample = getItem(position);
        View view = LayoutInflater.from(getContext()).inflate(resourceId,parent,false);
        ImageView img = (ImageView) view.findViewById(R.id.iv_pic);
        TextView tv1 = (TextView) view.findViewById(R.id.tv_1);
        TextView tv2 = (TextView) view.findViewById(R.id.tv_2);
        img.setImageResource(sample.getImageId());
        tv1.setText(sample.getABC());
        tv2.setText(sample.getQwe());
        return view;
    }
}

MainActivity

public class MainActivity extends AppCompatActivity {

    private List<Sample> sampleList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        start();
        SampleAdapter adapter = new SampleAdapter(MainActivity.this,R.layout.item,sampleList);
        ListView listView = (ListView) findViewById(R.id.list_view);
        listView.setAdapter(adapter);
    }

    private void start(){
        Sample a = new Sample("ABC","qwe",R.mipmap.ic_launcher);
        sampleList.add(a);
        Sample b = new Sample("DEF","asdfghjkl",R.drawable.user_icon);
        sampleList.add(b);
        Sample c = new Sample("GHI","zxcvbnm", R.drawable.pwd_icon);
        sampleList.add(c);
    }
}

运行效果
在这里插入图片描述

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

关于Adapter数据适配器 的相关文章

  • 成功是一种境界

    第1节 完成三十岁前的积累 准备做一个成功的男人 1 Chapter Six 完成三十岁前的积累 准备做一个成功的男人 二十几岁是褪尽青涩 走向成熟的男人 二十几岁是很有紧迫感的年龄 如果男人到了三十还一事无成 人们就不再像对二十几岁时那样
  • 2.5 Java方法调用——类名调用方法、对象调用方法

    文章目录 方法 1 什么是方法 2 方法如何定义 方法怎么使用 通过类名调用方法 static 修饰方法 类名调用 通过对象调用方法 不加static修饰 new一个对象 对象调用 方法 1 什么是方法 类似于C语言中的函数 解决某一个问题
  • static_cast与dynamic_cast转换

    一 C语言中存在着两种类型转换 隐式转换和显式转换 隐式转换 不同数据类型之间赋值和运算 函数调用传递参数 编译器完成 char ch int i ch 显示转换 在类型前增加 Type 变量 对变量进行的转换 用户显式增加 char pc
  • 无法将值vmware-tray.exe写入注册表

    VMWare更新时候遇到问题 出现 无法将值vmware tray exe写入注册表 提醒 百度后发现各个帖子采用禁用账户的方法 完美的解决方案是 直接关掉所有杀毒软件
  • Java文件读写IO/NIO及性能比较总结

    干Java这么久 一直在做WEB相关的项目 一些基础类差不多都已经忘记 经常想得捡起 但总是因为一些原因 不能如愿 其实不是没有时间 只是有些时候疲于总结 今得空 下定决心将丢掉的都给捡起来 文件读写是一个在项目中经常遇到的工作 有些时候是
  • org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document fro

    org springframework beans factory BeanDefinitionStoreException IOException parsing XML document from class path resource
  • matlab人工神经网络如何使用,MATLAB的人工神经网络应用

    一 人工神经网络简介 人工神经网络 Artifical NeuralNetwork ANN 是目前国际上迅速发展的前沿交叉学科 张立明 1993 它是模仿生物神经系统的信息处理方式 组织结构和系统功能的简化系统 人工神经网络以其自身的自组织
  • 关于pytorch加载预训练模型的一些知识点

    一 用pytorch加载预训练模型默认存储路径 本机CPU C Users asus cache torch hub checkpoints 服务器GPU home xxx cache torch hub checkpoints 二 常用预
  • Python简单编程复习

    Python简单编程复习 1 计算1 2 3 100 total 0 i 1 while i lt 100 total i i 1 print total 2 编写程序 要求用户从键盘输入若干整数 输出它们的和 print 请输入若干整数
  • C++之STL——String字符序列类(1)

    目录 前言 String类 1 该类的由来 2 String类对象的创建 1 头文件 2 类对象的创建 其他用法 3 String类对象遍历 1 方括号 重载遍历 2 范围for遍历 3 迭代器遍历 总结 前言 在学习 C语言的过程中 我们
  • 《程序员做饭指南》霸榜 GitHub:不仅有量筒、烧杯,还用上了数学公式?

    对于 GitHub 相信绝大多数程序员都再熟悉不过了 作为目前全球最大的开源软件存储库 GitHub 托管了大量的软件代码 无数开源爱好者聚集于此 也有很多程序员会利用每天的空 摸 闲 鱼 时间逛一逛 GitHub 以此了解最近的热门项目和
  • 解决pandas用in判断结果错误的问题

    问题解析 对于一个series import pandas as pd date series pd Series pd date range 2020 01 01 periods 100 如下的判断会返回False pd to datet
  • 简单的视频剪辑教程:使用win10自带的工具剪切和合并视频

    剪切视频 右键视频文件以 照片 的方式打开视频 如同 点击右上角的编辑 如下图 选择 剪裁 进度条会看到绿球和白球 绿球是当前视频播放的位置 进度条两端都有白球 白球内进度条是要保存的视频 如下图是保存的视频 之后把文件保存 合并视频 找到
  • python dialog使用_dialog的使用方法

    dialog的使用方法 发布时间 2020 06 03 14 09 01 来源 亿速云 阅读 563 作者 Leah 今天小编给大家分享的是dialog的使用方法的介绍 相信大部分人都不太了解 为了让大家更加了解 小编给大家总结了以下内容
  • 1.5 起步 - 安装 Git

    1 5 起步 安装 Git 版本说明 版本 作者 日期 备注 0 1 loon 2019 3 19 初稿 目录 文章目录 1 5 起步 安装 Git 版本说明 目录 安装 Git 1 在 Linux 上安装 2 在 Mac 上安装 Figu
  • struct iphdr IP头部与tcphdr tcp头部与linux中的struct IP IP头部

    struct iphdr IP头部 sk buff gt iphdr usr src linux 2 6 19 include linux ip h struct iphdr if defined LITTLE ENDIAN BITFIEL
  • 用Process Explorer分析进程各个线程CPU占用率

    使用Process Explorer可以很方便查看某个进程各个线程的CPU占用率 可以为排查问题提供帮助 我使用的Process Explorer版本是v16 21 64bit 使用VS 2008创建一个MFC对话框程序 在代码中创建两个线
  • ajax上传 webapi,让webapi只接受ajax请求

    AjaxOnly继承ActionFilterAttribute 代码如下 public class AjaxOnlyAttribute ActionFilterAttribute public override void OnActionE
  • 2022 MathorCup 数学建模B题思路解析

    文章目录 Mathorcup B题题目介绍 一 问题一 1 地图模型 2 路径规划 3 任务分配调度模型 二 问题二 三 问题三 1 分析 1 点冲突 2 边冲突 2 冲突处理及模型评价 Mathorcup B题题目介绍 B题无人仓的搬运机
  • Visual Leak Detector(vld)无法显示内存泄露打印信息解决办法

    如果使用vld时 没有任何泄露信息输出时 关注编译过程是否出现编译警告 warning C4627 include

随机推荐

  • List 转换为 List<实体类>

    步骤 1 for循环遍历list 2 用Object 数组接受每个Object对象 3 将Object 里的参数取出放入 实体对象中 4 将实体对象放进 list lt 实体类 gt 中 String sql SELECT FROM dep
  • JAVA获取对象类名

    对象名 getClass 与类名 class所得到的字符串相同 String a new String aaa System out println a getClass String class 返回true
  • 关于fatal error LNK1104: cannot open file 'uuid.lib'的问题

    关于fatal error LNK1104 cannot open file uuid lib 的问题 今天想要将cl命令配置到命令行中使用 在网上找了一下资料 按照http www oschina net question 234345
  • GPIO的速度的理解

    一 GPIO模式配置 1 输入 输出模式 参考stm32手册 2 GPIO输出模式下 几种速度的区别 1 GPIO 引脚速度 GPIO Speed 2MHz 10MHz 50MHz 又称输出驱动电路的响应速度 芯片内部在I O口的输出部分安
  • 逆变器原理

    逆变器是把直流电转变为交流电的一种装置 它一般包括逆变桥 控制逻辑和滤波电路组成 主要是把各种直流源转变为交流供交流负载使用 一般直流源有蓄电池 干电池 太阳能电池等 可以应用到不间断电源 UPS 太阳能发电转换等 本次来探讨一下逆变桥的工
  • Unity游戏开发——UnityUGUI打包图集

    现在Unity中使用UGUI实现UI的越来越多 我们项目也才4 6 1升级到5 6 3对项目全面升级 5 x中UGUI已经非常成熟 各种资料各种效果都非常多 由于之前一直习惯用NGUI在使用UGUI还是比较顺利的 都是一个作者写的都是控件式
  • 货币战争

    中国人写的关于货币的书籍 卖的比较好 关于xx家族的阴谋论 金融控制了世界 现在xx家族的财富得有多少 有许多人反驳这本书中写的内容 xx家族早已没落了 但是写的还是不错的 推荐推荐 2013 9 29
  • esp32微型计算机,基于ESP32的几款开发板

    ESP32是乐鑫推出的一款芯片 拥有40nm的工艺 双核32位MCU 2 4GHz双模Wi Fi和蓝牙芯片 主频高达230MHz 计算能力可达600DMIPS 下面为大家介绍一些基于ESP32的开发板 1 Heartypatch 一款基于E
  • 【Kafka】docker部署Kafka集群

    目录 Kafka概述 Kafka集群docker部署流程 简述 环境准备 部署流程 参考文献 Kafka概述 以下概述Kafka内的几个核心概念 可参考官方文档 有兴趣可读 kafka apache org Topic与日志 Topic 就
  • 第四篇、UDP消息发送

    文章目录 前言 一 UDP通信操作 二 代码示例 1 UDP消息发送 总结 前言 上一篇我们共同学习了TCP文件传输 本篇我们来学习UDP消息发送 一 UDP通信操作 发送方 1 建立一个socket连接 2 建立一个包 3 发送包 4 关
  • SSL VPN

    1 SSL工作过程是什么 第一阶段 客户端首先发送client hello消息到服务端 服务端收到client hello信息后 再发送server hello消息到客户端 随机数 32位时间戳 28字节随机序列 用于计算摘要信息和预主密钥
  • Java系列——封装、继承、多态初了解

    目录 一 前言 二 封装 1 什么是封装 2 封装的特点 3 封装的使用 三 继承 1 什么是继承 2 继承的特点 3 继承的优点 4 继承的使用 4 1 继承的格式 4 2 继承的演示 4 3 成员变量 4 4 成员方法 4 5 构造方法
  • Pyhton零售数据分析及产品关联分析

    一 项目背景 总结 项目背景 以购物篮分析为背景 分析某跨国棒球用品零售商的历史订单数据 为企业提供运营及销售策略 项目总结 一 本项目对企业历史订单数据进行以下角度的处理及分析 数据探索及清洗 对6w 订单数据进行探索及清洗处理 为数据构
  • 2022年最新前端面试题,持续更新

    js面试题 1 js数据类型 基本数据类型 Number String Boolean Null Undefined Symbol bigInt 引用数据类型 object Array Date Function RegExp 2 js变量
  • surf特征原理

    前言 也许我们使用过Uiautomator编写过自动化测试脚本 也许我们也使用过Monkey来测试过应用的稳定性 但在使用过程中总觉得有或多或小的问题 用Uiautomator写脚本 总觉得有时候控件没法识别 用Monkey来进行稳定性测试
  • Oracle SQL developer不显示dbms_output.put_line的输出内容

    1 调出dbms输出窗口 2 dbms选择对应的数据库连接 3 工作区SQL文件 定义一个触发器 create trigger newtmpdata 创建触发器newtmpdata 在tmp中添加新数据 after insert 插入操作之
  • yolo算法通俗易懂讲解

    参考 https blog csdn net briblue article details 103149407 depth 1 utm source distribute pc relevant none task utm source
  • .NET[C#]LINQ查询List集合中所有重复的元素如何实现?(转载)

    NET C LINQ查询List集合中所有重复的元素如何实现 转载 方案一 var query lst GroupBy x gt x Where g gt g Count gt 1 Select y gt y Key ToList 如果还需
  • C#,去除字符串指定的之字符,并去掉不可见的 “”一种方法。

    string str1 小王 心情 很 平 静 char chs1 new char 定义一个字符数组 存放上面字符串中不要的内容 和 string result1 str1 Split chs1 StringSplitOptions Re
  • 关于Adapter数据适配器

    适配器 什么是适配器 Android适配器是数据和视图之间的桥梁 以便于数据在View上显示 适配器就像显示器 把复杂的东西按人可以接受的方式来展现 Adapter数据适配器将各种数据以合适的形式绑定到控件上 像listview gridv