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

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD,日常还会涉及Android开发工作。

如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。

😊 座右铭:不想当开发的测试,不是一个好测试✌️。

热衷分享,喜欢原创,如果觉得博主的文章还不错的话,还请点赞、收藏哦!👍

文章目录

  • 收获
  • [一 说在前面](#一 说在前面)
  • [二 ListView 的简单使用](#二 ListView 的简单使用)
  • [三 Demo 展示](#三 Demo 展示)

收获

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

一 说在前面

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

二 ListView 的简单使用

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

xml 复制代码
<ListView
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</ListView>

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

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

逻辑代码如下:

kotlin 复制代码
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 源码中的构造函数中的参数,具体代码如下所示:

java 复制代码
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和数据之间的关联就建立完成了。

java 复制代码
public void setAdapter(ListAdapter adapter) {
        throw new RuntimeException("Stub!");
    }

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

三 Demo 展示

相关推荐
8931519604 天前
Android开发教程随机数字验证码
android·android开发·android教程·android随机数字验证码
小曾同学.com24 天前
在 Android 应用程序中实现与WebSocket 服务器的实时通信
websocket·okhttp·android开发·handler·okhttpclient·websocket事件监听
茜茜西西CeCe2 个月前
移动技术开发:ListView水果列表
android·java·安卓·android-studio·listview·移动技术开发
且听真言2 个月前
Flutter ListView控件
flutter·builder·controller·listview·listview原理
代码的奴隶(艾伦·耶格尔)3 个月前
javafx的ListView代入项目的使用
服务器·listview
foxgod4 个月前
qml 实现一个listview
前端·qml·listview
浩宇软件开发4 个月前
基于Android平台开发,天气预报APP
android·android studio·android开发
小曾同学.com4 个月前
如何更好的优化 ListView 控件的性能
android开发·适配器·listview优化·arrayadapter·setadapter
小曾同学.com4 个月前
Android中的适配器,你知道是做什么的吗?
android·recyclerview·listview·android适配器·android adapter·kotlin语言·arrayadapter适配器