ListView 的简单使用及 ArrayAdapter 中参数详解

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD,日常还会涉及Android开发工作。
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。
😊 座右铭:不想当开发的测试,不是一个好测试✌️。
热衷分享,喜欢原创,如果觉得博主的文章还不错的话,还请点赞、收藏哦!👍

文章目录

  • 收获
  • 一 说在前面
  • ListView 的简单使用
  • 三 Demo 展示

收获

通过本篇文章您将了解到 ListView 的基本用法及能够实现一段文本数据的纵向滑动,当然也会详细的了解适配器ArrayAdapter 的具体使用。

一 说在前面

ListView 是 Android 中最常用的控件之一,几乎所有的应用都会用到它,它是用来做什么的呢?由于手机屏幕空间比较有限,能一次性在屏幕上显示的内容并不多,当我们的程序中有大量数据需要展示的时候,就需要ListView控件来实现滑动。比如我们翻看QQ、微信聊天列表、翻阅微博最新消息等。所以 ListView 是用来做滑动控件内容的。

ListView__10">二 ListView 的简单使用

首先要在布局文件中增加 ListView 控件,属性无非就是 id、宽、高这些,不做过多解释。

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

在 MainActivity 中书写逻辑代码,首先我们把数据放在集合中,但是集合中的数据是无法直接传递给 ListView 的,我们需要借助适配器来完成,那么什么是适配器呢。可以查阅 Android 适配器这篇文章。

适配器是一种用于提供数据和管理视图展示的组件,适配器充当数据源与显示视图之间的桥梁,它负责将数据转换为适合显示在用户界面上的视图,并将用户界面上的操作反馈回数据源

逻辑代码如下:

class MainActivity : AppCompatActivity() {
    //private val data = arrayOf("Apple","Banana","Orange","Watermelon","Apple","Banana","Orange","Watermelon")
    private val data = listOf("Apple","Banana","Orange","Watermelon","Apple","Banana","Orange","Watermelon","Apple","Banana","Orange","Watermelon","Apple","Banana","Orange","Watermelon","Apple","Banana","Orange","Watermelon","Apple","Banana","Orange","Watermelon","Apple","Banana","Orange","Watermelon","Apple","Banana","Orange","Watermelon")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        // 核心代码
        setContentView(R.layout.activity_list_view)
        var listView: ListView = findViewById(R.id.listView)
        val adapter = ArrayAdapter(this,android.R.layout.simple_list_item_1,data)
        listView.adapter = adapter
        // 非透明状态栏
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.listView)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }
    }
}

在 ArrayAdapter 的构造函数中依次传入 Activity 的实例,ListView 子项布局的id,以及数据源,为什么是这三个参数呢?主要还是看 ArrayAdapter 源码中的构造函数中的参数,具体代码如下所示:

public ArrayAdapter(@NonNull Context context, int resource, @NonNull List<T> objects) {
        throw new RuntimeException("Stub!");
    }

在本文示例中,使用 android.R.layout.simple_list_item_1 作为 ListView 子项目布局的 id,这是一个 Android 内置的布局文件,里面只有一个 TextView ,可用于简单地显示一段文件。这样适配器就构建好了。

最后,还需要调用 ListView 的 setAdapter() 方法,将构建好的适配器对象传递进去,这样ListView和数据之间的关联就建立完成了。

public void setAdapter(ListAdapter adapter) {
        throw new RuntimeException("Stub!");
    }

listView.adapter = adapter 是将适配器 adapter 设置为 ListView 控件的适配器,以便在 ListView 中显示数据。适配器负责将数据源中的每个项与视图进行绑定,并根据需要创建和重用视图,以确保在列表中显示正确的数据项。

三 Demo 展示

在这里插入图片描述


http://www.niftyadmin.cn/n/5536518.html

相关文章

记录一次Apache Tomcat 处理返回自定义的404页面

记录工作中遇到处理访问tomcat 不存在的资源&#xff0c;返回自定义的404页面 删除webapps目录下的example、docs、manager、hta-manager目录&#xff0c;只保留 ROOT目录&#xff0c;应用部署在了这个目录 删除 manager、hta-manager 我没有发现有什么异常 制作404.jsp 或者 4…

windows USB 设备驱动开发-USB设备描述符

USB的描述符是USB设备向主机报告状态的重要数据结构&#xff0c;在USB通电后&#xff0c;端点(也称为终结点)0始终处于可用状态&#xff0c;这个默认的端点就是用于主机从设备中读取描述符的。 讨论USB通讯&#xff0c;需要从软件和硬件两方面说起&#xff0c;在软件上&#x…

车牌号查车辆信息-车牌号查车辆信息接口-汽车API接口

接口简介&#xff1a;输入车牌号&#xff0c;返回车辆相关信息&#xff08;无车主信息&#xff09;。初始登记日期、上险日期、保险到期时间、车架号、品牌这些数据会返回&#xff0c;其他数据不一定全部返回&#xff0c;,详细参数请查看返回接口文档 一般在新车上险或过户后第…

机器学习复习总结

目录 第一章 机器学习的概念及其应用 1.1机器学习的特点&#xff1a; **1.2机器学习的分类&#xff1a; 1.2.1监督学习&#xff1a; 1.2.2无监督学习&#xff1a; 1.2.3强化学习&#xff1a; 1.2.4三种机器学习的区别 *1.3深度学习 1.3.1深度学习的实质&#xff1a; …

首家!腾讯云数据万象通过中国信通院智能存储专项测试

2024年6月19日&#xff0c;由中国通信标准化协会主办&#xff0c;中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)承办的首届“数据智能大会”在京隆重召开。腾讯云存储受邀出席了活动&#xff0c;大会中“可信数据智能”系列评估测试结果正式颁布&#xff0c;经过严苛…

Ubuntu 22.04.1 LTS 离线安装Docker

确定linux版本 cat /etc/lsb-release DISTRIB_IDUbuntuDISTRIB_RELEASE22.04DISTRIB_CODENAMEjammyDISTRIB_DESCRIPTION"Ubuntu 22.04.1 LTS"确定dpkg版本 sudo dpkg --print-architecture amd64下载地址 https://download.docker.com/linux/ubuntu/dists/jamm…

算法力扣刷题 三十一【150. 逆波兰表达式求值】

前言 栈和队列篇。 记录 三十一【150. 逆波兰表达式求值】 一、题目阅读 给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意&#xff1a; 有效的算符为 、-、* 和 / 。 每个操作…

什么是有效的电子签名?PDF电子签名怎样具备法律效力?

电子签名逐渐成为商务文书和法律文件中不可或缺的一部分。《电子签名法》自2005年4月1日起施行&#xff0c;这一立法是中国信息化法律的重要里程碑&#xff0c;为电子签名应用奠定了法律基础。电子签名不仅仅是一种技术手段&#xff0c;更是一种法律认可的签名形式。那么究竟什…