Andriod开发 Adapter ArrayAdapter

news2024/10/7 16:17:35

一、Adapter

Adapter 是一个非常重要的组件,用于将数据与视图进行绑定。

一般的用法是一个View中要显示多个布局相同但数据不同的item(例如论坛界面的多个帖子,购物车里的多个商品)。

可以将item的布局和数据输入Adapter,View使用Adapter,就可以得到多个布局相同、内容不同的item了。

Adapter 通常用于在 ListView、RecyclerView、Spinner 等组件中显示数据。Adapter 的作用是将数据转换成视图,以便用户可以查看和操作数据。

Adapter 有多种类型,包括 ArrayAdapter、CursorAdapter、SimpleAdapter、BaseAdapter 等。

不同的 Adapter 类型适用于不同的数据源和视图类型。

 二、ArrayAdapter示例

 ArrayAdapter是最简单的适配器,只展示一行文字。通过使用ArrayAdapter,可以快速了解适配器的使用方法。

1)item的布局文件

因为 ArrayAdapter每个item只显示一行文字,所有放一个TextView就可以了

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:textSize="30dp"
    android:textColor="@color/purple_200"
    android:text="test"
    android:gravity="center"
    >

</TextView>

 2)View使用Spinner,有下拉列表和对话框两种模式

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".SpinnerActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Spinner Drop Down"
        android:textSize="30dp" />

    <Spinner
        android:id="@+id/sp_drop"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:spinnerMode="dropdown"></Spinner>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Spinner dialog"
        android:textSize="30dp" />

    <Spinner
        android:id="@+id/sp_dialog"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:spinnerMode="dialog"></Spinner>

</LinearLayout>

3)使用Adapter绑定item和数据,Spinner使用该Adapter

ArrayAdapter<String> adapter = new ArrayAdapter<>(this,R.layout.item_select,stars);
sp_dropdown.setAdapter(adapter);
设置Spinner默认选择第一项
sp_dropdown.setSelection(0);
监听Spinner选择item的动作
sp_dropdown.setOnItemSelectedListener(this);
package com.example.chapter08;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

public class SpinnerActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

    public static final String[] stars = {"Venus",  "Earth", "Jupiter", "Mars", "Mercury"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spinner);
        Spinner sp_dropdown = findViewById(R.id.sp_drop);
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,R.layout.item_select,stars);
        sp_dropdown.setAdapter(adapter);
        sp_dropdown.setSelection(0);
        sp_dropdown.setOnItemSelectedListener(this);

        Spinner sp_dialog = findViewById(R.id.sp_dialog);
        sp_dialog.setAdapter(adapter);
        sp_dialog.setSelection(0);
        sp_dialog.setOnItemSelectedListener(this);
    }
    
    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        Toast.makeText(this,"You select " + stars[i],Toast.LENGTH_LONG).show();

    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
}

4)效果图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/608574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Django Admin Cookbook-5如何在Django Admin后台中添加Logo

目录 后台显示文字与自定义 1.如何更改管理后台标题Django administration&#xff1f; 2.如何设置模型的复数文本&#xff1f; 3.如何创建两个独立的管理站点&#xff1f; 4.如何从Django管理后台中删除默认应用程序&#xff1f; 5.如何在Django管理后台中添加Logo&#xff…

C++语法(24) 哈希应用

C语法&#xff08;23&#xff09;-- 模拟实现unordered_set和unordered_map_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/130449452?spm1001.2014.3001.5501 目录 1.位图 1.定义 2.实现 3.应用 4.特点 2.布隆过滤器 1.介绍 2.设计场…

STM32F407输入捕获

文章目录 F407定时器输入捕获实验支持输入捕获的定时器有哪些输入捕获工作过程输入捕获测量高电平脉宽原理滤波器设置 配置步骤开启TIM5时钟与端口时钟配置PA0为用能复用功能&#xff08;AF2&#xff09;初始化端口并开启下拉电阻初始化TIM5设置TIM5的输入捕获参数TIM_Channel通…

数字信号处理10:Z变换(2)

今天我就不写后面的Z变换的剩下的东西了&#xff0c;直接写代码&#xff1a; 说实话&#xff0c;Python的Scipy.signal里面是没有和matlab一样的ztrans和iztrans&#xff0c;这让我头疼了几天时间&#xff0c;但是后面&#xff0c;看文档的时候&#xff0c;突然发现&#xff0…

Vue2模拟贪吃蛇小游戏

目录 一、效果展示 二、代码展示 三、原理讲解 3.1、页面创建 3.2、创建蛇与食物 3.3、移动与边界判断 3.4、吃、得分总结 二、代码展示 view的本地文件&#xff1a;可直接运行。 <template><div class"game"><div class"game-div"…

【架构基础】SOLID原则

SOLID原则是一套坚实而有效的软件设计原则&#xff0c;它由Robert C. Martin&#xff08;也称为 Uncle Bob&#xff09;在2000年提出&#xff0c;旨在帮助软件开发者设计出高内聚低耦合的软件&#xff0c;构建易于测试、可维护和可扩展的软件系统&#xff0c;降低软件后期的维护…

青春永不散场

虽然人生总是在不断的离别与相遇&#xff0c;但请相信这一次的离别是为了下次更美好的相遇。 一.毕业感想 四年的大学生活即将画上句号&#xff0c;让我不由得感慨万千。这四年里&#xff0c;我经历了无数的挑战和机遇&#xff0c;也结交了一群志同道合的朋友&#xff0c;收获…

抖音小程序+抖音矩阵系统开发:新玩法,新趋势

抖音seo优化源码&#xff0c;抖音seo矩阵系统搭建&#xff0c;抖音账号矩阵系统开发&#xff0c;企业在做账号矩阵过程中&#xff0c;最头疼的莫过于私域线索转化&#xff0c;作为开发者都知道&#xff0c;目前市面上我们了解的矩阵系统除了挂载POI信息外&#xff0c;无法挂载留…

【剑指offer】旋转数组的最小数字

文章目录 题目思路代码实现 题目 题目链接入口&#xff1a;JZ11 旋转数组的最小数字 思路 1.核心考点 &#xff08;1&#xff09;数组理解&#xff0c;二分查找&#xff0c;临界条件。 2.解题思路 &#xff08;1&#xff09;题目要求查找出一维数组的最小值&#xff0c;本…

变分模态分解(VMD)学习

目录 概述构造变分问题变分求解问题(引入拉格朗日)关于变分构造中的函数理解关于Uk(t)关于希尔伯特变换关于频谱调制 VMD算法(python) 概述 变分模态分解由Konstantin Dragomiretskiy于2014年提出&#xff0c;可以很好抑制EMD方法的模态混叠现象&#xff08;通过控制带宽来避免…

信息竞赛笔记(2)––快速幂

目录 快速幂 定义 分析 代码 递归实现 非递归实现(通用方法) 模意义下取幂 快速幂 定义 快速幂,二进制取幂(Binary Exponentiation,也称平方法),是一个在的时间内计算的小技巧&#xff0c;而暴力的计算需要的时间。 这个技巧也常常用在非计算的场景&#xff0c;因为它可…

【论文】通过基准分析优化联邦人员重新识别的性能

论文链接 目录 摘要1. 绪论2. 相关工作2.1 人员重新识别2.2 联邦学习 3. 联邦 个人REID基准3.1 数据集3.2 联合方案3.3 模型结构3.4 联邦学习算法3.5 性能指标3.6 参考实现4.1 通过相机联合方案4.2 按数据集联合方案 5. 性能优化5.1 知识蒸馏5.2 权重调整5.3 知识蒸馏和体重调…

提高代码质量的秘诀:类、方法、字段和包注释

&#x1f9d1;‍&#x1f4bb;CSDN主页&#xff1a;夏志121的主页 &#x1f4cb;专栏地址&#xff1a;Java基础进阶核心技术专栏 目录 &#x1f362; 一、注释的插入 &#x1f363; 二、类注释 &#x1f364; 三、方法注释 &#x1f365; 四、字段注释 &#x1f96e; 五、…

GreenPlum集群部署之抽丝剥茧

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

【stable diffusion原理解读通俗易懂,史诗级万字爆肝长文,喂到你嘴里】

文章目录 一、前言&#xff08;可跳过&#xff09;二、stable diffusion1.clip2.diffusion modelforward diffusion &#xff08;前向扩散&#xff09;逆向扩散&#xff08;reverse diffusion&#xff09;采样图阶段小结 3.Unet modeltimestep_embedding采用正余弦编码 三、sta…

华为OD机试真题 Java 实现【求符合要求的结对方式】【2023Q1 100分】,附详细解题思路

一、题目描述 用一个数组A代表程序员的工作能力&#xff0c;公司想通过结对编程的方式提高员工的能力&#xff0c;假设结对后的能力为两个员工的能力之和&#xff0c;求一共有多少种结对方式使结对后能力为N。 二、输入描述 6 2 3 3 4 5 1 6 第一行为员工的总人数&#xff…

精简总结:一文说明软件测试基础概念

基础概念-1 基础概念-2 目录 一、什么是软件测试&#xff1f; 二、软件测试的特点 三、软件测试和开发的区别 1、内容&#xff1a; 2、技能区别 3、工作环境 4、薪水 5、发展前景 6、繁忙程度 7、技能要求 四、软件测试与调试的区别 1、角色 2、目的 3、执行的阶…

Lecture 7 Deep Learning for NLP: Feedforward Networks

目录 Deep LearningFeedforward Neural Network 前馈神经网络Neuron 神经元Output Layer 输出层OptimizationRegularization 正则化Topic Classification 主题分类Language Model as Classifiers 语言模型作为分类器Word Embeddings 词嵌入Training a Feed-Forward Neural Netw…

RVOS操作系统协作式多任务切换实现-03

RVOS操作系统协作式多任务切换实现-03 任务&#xff08;task&#xff09;多任务 &#xff08;Multitask&#xff09;任务上下文&#xff08;Context&#xff09;多任务系统的分类协作式多任务 创建和初始化第 1 号任务切换到第一号任务执行协作式多任务 - 调度初始化和任务创建…

虚拟机-安装与使用2023

虚拟机-安装与使用 前言 一、虚拟机 1.VMware 2.Virtualbox 二、VMware 的下载 三、VMware 的安装 四、验证是否安装成功 五、运行 VMware 六、VMware 上安装其它操作系统 安装 Windows 10安装 CentOS-Linux安装 Kali-Linux 七、VMware 常用功能同步时间系统备份克隆快照内存设…