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 展示

相关推荐
89315196018 天前
Android仿简书创作弹起弹框
android·android开发·android教程·android弹框·android由上往下弹框·android由下往上弹框·android弹框动画
89315196021 天前
Android开发仿qq详情下拉头像变大
android·android开发·android教程·android下拉头像变大·android详情头像变大·个人详情头像下拉变大·仿qq详情下拉头像变大
rollingman1 个月前
WPF 学习《一》
学习·wpf·listview
浩宇软件开发1 个月前
Android开发,使用TabLayout+ViewPager2实现校园健康安全宣传
android studio·android开发
8931519601 个月前
Android开发教程案例源码分享-匹配动画多个头像飘动效果
android·android开发·android教程·kotlin教程·android头像飘动动画·android匹配动画·android多个头像飘动动画
暮雪倾风1 个月前
【Android开发】Android Studio 3.2.0汉化
android·ide·android studio·android开发
8931519602 个月前
Android开发教程随机数字验证码
android·android开发·android教程·android随机数字验证码
小曾同学.com2 个月前
在 Android 应用程序中实现与WebSocket 服务器的实时通信
websocket·okhttp·android开发·handler·okhttpclient·websocket事件监听
茜茜西西CeCe3 个月前
移动技术开发:ListView水果列表
android·java·安卓·android-studio·listview·移动技术开发
且听真言4 个月前
Flutter ListView控件
flutter·builder·controller·listview·listview原理