【android】ArrayAdapter 使用浅析

Android 浅谈ListView中ArrayAdapter和SimpleAdapter的用法 /第一步:先获取ListView的控件资源//第二步准备数据库(Array)String [] data={“中国”,“俄罗斯”,“美国”,“英国”,“法国”,“印度”,“韩国”,“朝鲜”,“意大利”,“土耳其”,“阿达里亚”,“加拿大”,“缅甸”,“日本”,“老挝”,“蒙古”,“乌克兰”,“泰国”};//第三步:配置适配器(ArrayAdapter)3个参数,上下文,xml布局资源,数据库源//第四步:将适配器与ListView经行关联最终效果图。 阅读详情

目录

  • 操作环境
  • 导读
  • 源码
  • 实例

操作环境

  • 操作系统:win7-64bit 旗舰版
  • android 版本:android-23
  • 模拟器:海马玩模拟器 0.9.0 Beta

导读

ArrayAdapter 是 BaseAdapter 的封装,目的是简化 Adapter 的继承复写等。ArrayAdapter 默认情况下希望你仅提供只有一个 TextView 的 item 布局;当然,如果布局内容远远不止于此,可以增加一个参数,该参数用于描述将要使用的 TextView。

源码

  • 构造函数:
public ArrayAdapter(Context context, @LayoutRes int resource) 
public ArrayAdapter(Context context, @LayoutRes int resource, @IdRes int textViewResourceId)
public ArrayAdapter(Context context, @LayoutRes int resource, @NonNull T[] objects)
public ArrayAdapter(Context context, @LayoutRes int resource, @IdRes int textViewResourceId,
            @NonNull T[] objects)
public ArrayAdapter(Context context, @LayoutRes int resource, @NonNull List<T> objects)
public ArrayAdapter(Context context, @LayoutRes int resource, @IdRes int textViewResourceId,
            @NonNull List<T> objects) 
  • getView 方法:
/**
     * {@inheritDoc}
     */
    public View getView(int position, View convertView, ViewGroup parent) {
        return createViewFromResource(mInflater, position, convertView, parent, mResource);
    }

    private View createViewFromResource(LayoutInflater inflater, int position, View convertView,
            ViewGroup parent, int resource) {
        View view;
        TextView text;

        if (convertView == null) {
            view = inflater.inflate(resource, parent, false);
        } else {
            view = convertView;
        }

        try {
            if (mFieldId == 0) {
                //  If no custom field is assigned, assume the whole resource is a TextView
                text = (TextView) view;
            } else {
                //  Otherwise, find the TextView field within the layout
                text = (TextView) view.findViewById(mFieldId);
            }
        } catch (ClassCastException e) {
            Log.e("ArrayAdapter", "You must supply a resource ID for a TextView");
            throw new IllegalStateException(
                    "ArrayAdapter requires the resource ID to be a TextView", e);
        }

        T item = getItem(position);
        if (item instanceof CharSequence) {
            text.setText((CharSequence)item);
        } else {
            text.setText(item.toString());
        }

        return view;
    }

简单说明:

  • 构造方法:

    • 参数 @LayoutRes int resource: item 布局对应的布局文件;
    • 参数 @IdRes int textViewResourceId: 布局文件对应的 TextView 控件Id,如果不传入该参数,则默认值为0;
  • getView 方法:

    • 如果 View convertView 非 null,则继续使用它;否则,通过 inflater.inflate( resource, parent, false ) 方式创建新的;
    • 【此处高能】:简单说就是 ArrayAdapter 只接受 TextView 或其衍生类来设置数据映射
      • 如果未指定 textViewResourceId,则会将 convertView 强转成 TextView;
      • 否则,通过 findViewById 将其从布局文件中找到后 强转成 TextView;
    • 将数据集中对应的元素转成String 或 CharSequence之后设置到 TextView 系列控件;

实例

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

    <TextView android:id="@+id/tv_content"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        />

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

    <ListView android:id="@+id/lv_test"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </ListView>

</LinearLayout>
  • MainActivity.java:
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test_array_adapter);
        this.testArrayAdatper();
    }

    // 测试 ArrayAdapter
    void testArrayAdatper(){
        ListView lv = (ListView)this.findViewById(R.id.lv_test);
        // 设置数据列表
        ArrayList<String> list = new ArrayList<>();
        for(int i=0; i<5; i++){
            list.add("item_" + i);
        }
        // 实例化对象
        ArrayAdapter aa = new ArrayAdapter(this, R.layout.test_item, R.id.tv_content, list);
        // 设置适配器
        lv.setAdapter(aa);
    }
  • 效果图:
    这里写图片描述
android中arrayAdapter(简单文本列表)的基础操作 摘要:ArrayAdapter是Android开发中用于数据与列表视图绑定的基础适配器。本文详解其核心用法及进阶技巧:(1)基础使用流程包括准备数据源、选择布局(系统内置或自定义)、初始化适配器;(2)高级功能涵盖动态数据更新、点击事件处理和自定义过滤实现;(3)常见问题解决方案涉及布局ID匹配、数据刷新机制等。特别说明:ArrayAdapter适合简单文本列表,复杂场景建议通过自定义子类或RecyclerView实现。掌握ArrayAdapter是学习Android列表开发的重要基础。 阅读详情

相关推荐

Android ListView与Arrayadapter之间的搭配使用

在做安卓开发的时候很多时候都要用到ListView来显示数据,ListView使用的也很广泛,用到了ListView就会使用到adapter适配器,关键就在于adapter,刚开始学安卓的时候就根本不知道怎么根据自己的需要来选择对应的adapter,今天自己也就来总结一下,方便查看。 在ListView中使用最多的adapter是ArrayAdapter、SimpleAdapter、BaseAd

chenfengdejuanlian的专栏 4360

Android(14) ArrayAdapter(数组适配器)的三种方法

ArrayAdapter数组适配器用于绑定格式单一的数据,数据源可以是集合或者数组 列表视图(ListView)以垂直的形式列出需要显示的列表项。 实现过程:新建适配器->添加数据源到适配器->视图加载适配器 第一种:直接用ListView组件创建 列表每一行只有一行文字 效果如图: activity_list布局: <?xml version="1.0" e...

郑清 5万+

RingBuffer 环形缓冲区----镜像指示位

称作环形缓冲区,也称作环形队列(circular queue),是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。这个宏定义用于计算向下对齐的地址。size和align。size是要对齐的内存大小,align是所需的对齐大小。这个宏返回一个值,该值是size向下对齐到align边界后的地址。例如,假设我们有一个 32 位的系统,并且我们需要将数据对齐到 64 位的边界。我们可以使用在这个例子中,data数组的大小为 10 个元素,我们需要将其对齐到 8 字节边界。宏返回data。

呵呵哒!的博客 2408

【Android基础】ArrayAdapter适配器展示数据

【Android基础】ArrayAdapter适配器展示数据; 适配器充当View与数据之间的桥梁,本文记录下ArrayAdapter适配器展示数据; ArrayAdapter比较简单,只能显示一行文本;

我还可以 2379

思科路由器重分发(静态路由+OSPF动态路由+RIP动态路由)

思科路由器重分发(静态路由+OSPF动态路由+RIP动态路由)

2301_81256766的博客 1259

MATLAB实战:手把手教你用三频四步相移法搞定结构光三维重建(附完整代码)

本文详细介绍了如何使用MATLAB实现三频四步相移法进行高精度结构光三维重建。通过光栅图像预处理、相位计算、多频外差与相位解包裹等步骤,结合完整代码示例,帮助读者掌握从二维图像到三维点云的关键技术。该方法在工业检测和逆向工程中具有抗干扰能力强、高分辨率和鲁棒性等优势。

weixin_29201933的博客 338

(1)Adapter适配器(ArrayAdapter、SimpleAdapter、BaseAdapter)

ArrayAdapter(数组适配器) ArrayAdapter只能显示一行文本数据 ArrayAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull T[] objects) { this(context, resource, 0, Arrays.asList(objects)) 参数...

weixin_30652897的博客 292

STM32固定翼增稳飞控设计:姿态解算、双环PID与一键救机实现

姿态稳定控制是无人机与航模飞控系统的核心基础,其本质是通过传感器融合(如IMU)实时感知飞行器姿态,并基于控制理论(如PID)生成修正指令以抑制扰动。该技术广泛应用于教育航模、轻型固定翼平台及嵌入式飞控开发场景,具有低延迟、高确定性、资源敏感等典型工程特征。本文围绕STM32F401与MPU6050构建的硬件闭环系统,深入解析互补滤波姿态解算原理与俯仰/横滚双环PID控制结构,同时聚焦‘一键救机’这一面向新手的关键安全机制——通过分阶段角速率抑制与平滑角度拉平策略,在80ms内启动响应,显著提升飞行容错能力

weixin_36328210的博客 400

Android中关于Adapter的使用(上)ArrayAdapter

在Android应用的开发中,ListView是最常用的一个列表显示控件,微博,联系人啊,反正只要涉及多数据展示的情况,都会用到ListView(另外就是GridView)。那么ListView又是如何来展示数据的呢?这就是Adapter的应用了。 Adapter是将数据展示在ListView(GridView)中的一个接口。通过不同的Adapter,可以很方便地展示数据,也可以实现各种自定义的效果了。 在Android日常的开发中,常用的Adapter有如下三种: 1)ArrayAdapter 2)Sim

持剑 1万+

【即插即用模块】Transformer篇 | AAAI 2026 | Circulant Attention:全新ViT自注意力范式,复杂度从O(N²) 降至O(NlogN)!

本文提出了一种基于频域优化的循环注意力模块(Circulant Attention),通过离散傅里叶变换(DFT)将传统自注意力中的矩阵乘法转化为频域元素乘法,显著降低了计算复杂度。该模块采用复数线性层适配频域特征,并引入门控调制机制增强表达能力,在保持全局依赖捕捉能力的同时,将复杂度从O(N²)降至O(NlogN)。实验表明,该模块在多种视觉任务中均能提升模型性能,且计算效率更高。适用于需要高效全局注意力的视觉Transformer架构,可作为传统自注意力的替代方案。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 152

C++(Qt)软件调试---静态分析工具clang-tidy(18)

现在很多人在开发中完全忽略了编译器、IDE的警告提示,这怎么可能写出稳定的程序。 clang-tidy是一个由LLVM项目提供的开源工具,是一个静态分析工具,用于进行静态代码分析和代码质量改进。

mahuifa的博客 5080

Android ArrayAdapter 详解

本文主要讲解ArrayAdapter的创建方法,我把ArrayAdapter分为三种:简单的、样式丰富的但内容简单的、内容丰富的。默认的,ArrayAdapter期望接受的样式文件里只含有一个textview,然后它把接受到的数据toString后(即调用数据对象的toString方法)展示在textview里。一、简单的。这样的列表的每一行都只有一行文字。// 当然listview 也可以是在layout里写好,然后findViewById()获取出来,这样的话后面就不需setContentView(li

彭香香的专栏 13万+

彻底讲透 SAP 中的 client-safe:从 CDS、AMDP 到 ABAP Cloud 的客户端隔离设计

SAP系统中的client-safe概念定义了技术边界:访问client-dependent数据的对象必须确保只看到单个client数据,而访问client-independent数据的对象则天然满足条件。这一原则直接影响CDS视图、AMDP等核心组件,并与ABAP Cloud开发模型紧密集成。在业务系统中,client isolation要求用户只能看到当前登录client的数据。SAP通过语言版本、对象规则和静态检查强制执行这一约束,特别是在ABAP Cloud开发中,AMDP方法和发布的API必须满足

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3263

android之ArrayAdapter使用

ArrayAdapter的基本使用方式。

风雨踏梦行 1733

OpenClaw-遇到的问题-Health check failed: gateway closed (1006 abnormal closure (no close frame)): no clos

OpenClaw网关服务安装成功但运行异常,显示健康检查失败(错误代码1006)。系统提供了Web控制界面(http://127.0.0.1:18789/)和带令牌的安全访问链接。文档建议参考故障排除指南,并提供了可选应用扩展功能(包括移动端支持)。注意运行本地代理存在安全风险,建议加固系统配置。若需启用网络搜索功能,需配置Brave搜索API密钥。安装完成后会自动打开仪表盘,需保持浏览器标签页以控制OpenClaw服务。

直到世界的尽头 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Android Studio开发之 Fragment子类中使用ArrayAdapter

Fragment子类中使用ArrayAdapter中的Context参数获取有三种方式: 第一种:getActivity() -- 最方便的方式,推荐使用。 第二种:使用inflater.inflate()方式得到的view对象获取。view.getContext()。 第三种:使用onCreateView从上层传过来的ViewGroup类型的container对象来获取,contain...

Jimmy 2295

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ArrayAdapter使用

ArrayAdapter使用,先看构造函数, 1.public ArrayAdapter (Context context, int resource)   这个构造函数只有两个参数,第一个一个是Context上下文,通常是ListView所在的Activity;另外一个是一个资源id,代表一个TextView。这个资源id可以采用系统的,比如android.R.layout.simp

yesjava的专栏 3489

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

android之arrayAdapter

activity中代码: package com.ghg.ArrayAdapter; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; public class Day06_01_ArrayAdap

gaohongijj的专栏 1万+

Android 中ArrayAdapter 的使用

我们经常使用ArrayAdapter对简单的数据进行填充,从常用的构造方法 public ArrayAdapter(Context context, int resource, T[] objects) { init(context, resource, 0, Arrays.asList(objects)); } 可以看出我们只需要传一个简单的数组和一个资源文

qq_20106997的博客 707

Android中的ArrayAdapter

参考资料: 《第一行代码》第二版 Android Adapter:ArrayAdapter篇 先上结论 默认情况下,ArrayAdapter期望布局文件里只有一个TextView,连Layout都不能包含(构造方法1、3、5)。 如果你想使用复杂的布局,需要向向构造函数传递一个filed id,即布局中对应TextView的id。 如果想使用更复杂的布局,就要重写BaseAdapter的getVie

Hultron的博客 1288

android ArrayAdapter详解

ArrayAdapter是继承BaseAdapter而来,还实现了Filterable接口,Filterable接口顾名思义,就是个过滤器,比如电话簿的查找功能,可以通过这个过滤器来得到查找结果,既然有过滤功能,那过滤器得到的数据,就应该被适配器获取并更新,所以ArrayAdapter还有类似数组的insert、add、addall、remove、clear等功能,可以对ArrayAdapter的

ouqijiang330的专栏 2055

安卓开发之ArrayAdapter使用

String objects[] = {"老张", "老王", "老李", "老刘", "老花生米", "老板"};// 创建一个ArrayAdapter。// 找到ListView控件。// 设置数据适配器。

weixin_67271870的博客 375

java arrayadapter_Android之ArrayAdapter详解

BaseAdapter之ArrayAdapterArrayAdapter是BaseAdapter的一个具体实现,可直接使用泛型进行构造,能像List一样直接对Adapter进行增删操作。也是最简单的一个了ArrayAdapter使用示例:运行效果图:public class MainActivity extends AppCompatActivity {@Overrideprotected voi...

weixin_26802933的博客 553

Android ArrayAdapter的使用

ArrayAdapter 本想偷偷懒,直接调用下别人翻译的api文档,自己直接写个例子上来,可找了半天还是没有找到翻译好的,算了只能自己动手了。(有找到可以给个地址) 先来看看对ArrayAdapter最基本的介绍吧。 一个具体的BaseAdapter能支持任意数组对象,在默认情况下这类预期提供的资源id引用的是一个TextView.如果你想使用一个更复杂的布局,使用构造函数也需要一

Sunshine的专栏 1万+
上一篇: 【android】SimpleAdapter 使用浅析
下一篇: 【android】垃圾回收机制
natloc
博客等级 码龄15年 2粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值