😄作者简介: 小曾同学.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 中显示数据。适配器负责将数据源中的每个项与视图进行绑定,并根据需要创建和重用视图,以确保在列表中显示正确的数据项。