如何在 Kotlin 中创建带有复选框的 ListView?
kotlin apps/applicationsmobile development更新于 2026/2/11 1:37:17
此示例演示了如何在 Kotlin 中创建带有复选框的 ListView。
步骤 1 − 在 Android Studio 中创建一个新项目,前往"文件">"新建项目",并填写所有必填信息以创建新项目。
步骤 2 − 将以下代码添加到 res/layout/activity_main.xml。
示例
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="4dp" tools:context=".MainActivity"> <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="wrap_content" /> </RelativeLayout>
步骤 3 − 将以下代码添加到 src/MainActivity.kt
示例
import android.view.View
import android.widget.AdapterView.OnItemClickListener
import android.widget.ListView
import androidx.appcompat.app.AppCompatActivity
import java.util.*
class MainActivity : AppCompatActivity() {
private var dataModel: ArrayList<DataModel>? = null
private lateinit var listView: ListView
private lateinit var adapter: CustomAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "KotlinApp"
listView = findViewById<View>(R.id.listView) as ListView
dataModel = ArrayList<DataModel>()
dataModel!!.add(DataModel("Apple Pie", false))
dataModel!!.add(DataModel("Banana Bread", false))
dataModel!!.add(DataModel("Cupcake", false))
dataModel!!.add(DataModel("Donut", true))
dataModel!!.add(DataModel("Eclair", true))
dataModel!!.add(DataModel("Froyo", true))
dataModel!!.add(DataModel("Gingerbread", true))
dataModel!!.add(DataModel("Honeycomb", false))
dataModel!!.add(DataModel("Ice Cream Sandwich", false))
dataModel!!.add(DataModel("Jelly Bean", false))
dataModel!!.add(DataModel("Kitkat", false))
dataModel!!.add(DataModel("Lollipop", false))
dataModel!!.add(DataModel("Marshmallow", false))
dataModel!!.add(DataModel("Nougat", false))
adapter = CustomAdapter(dataModel!!, applicationContext)
listView.adapter = adapter
listView.onItemClickListener = OnItemClickListener { _, _, position, _ ->
val dataModel: DataModel = dataModel!![position] as DataModel
dataModel.checked = !dataModel.checked
adapter.notifyDataSetChanged()
}
}
}
步骤 4 − 创建一个新的 Kotlin 类(CustomAdapter.kt),并将以下代码添加到 src/CustomAdapter.kt
示例
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.CheckBox
import android.widget.TextView
import java.util.*
class CustomAdapter(private val dataSet: ArrayList<*>, mContext: Context) :
ArrayAdapter<Any?>(mContext, R.layout.row_item, dataSet) {
private class ViewHolder {
lateinit var txtName: TextView
lateinit var checkBox: CheckBox
}
override fun getCount(): Int {
return dataSet.size
}
override fun getItem(position: Int): DataModel {
return dataSet[position] as DataModel
}
override fun getView(
position: Int,
convertView: View?,
parent: ViewGroup
): View {
var convertView = convertView
val viewHolder: ViewHolder
val result: View
if (convertView == null) {
viewHolder = ViewHolder()
convertView =
LayoutInflater.from(parent.context).inflate(R.layout.row_item, parent, false)
viewHolder.txtName =
convertView.findViewById(R.id.txtName)
viewHolder.checkBox =
convertView.findViewById(R.id.checkBox)
result = convertView
convertView.tag = viewHolder
} else {
viewHolder = convertView.tag as ViewHolder
result = convertView
}
val item: DataModel = getItem(position)
viewHolder.txtName.text = item.name
viewHolder.checkBox.isChecked = item.checked
return result
}
}
步骤 5 − 创建一个新的 Kotlin 类 (DataModel.kit),并将以下代码添加到 src/DataModel.kt
package app.com.q3 class DataModel internal constructor(var name: String?, var checked: Boolean)
步骤 6 − 创建布局资源文件 (row_item.xml),并添加以下代码 −
示例
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="2dp"> <TextView android:id="@+id/txtName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_centerVertical="true" android:textColor="@android:color/background_dark" android:textSize="16sp" /> <CheckBox android:id="@+id/checkBox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentEnd="true" /> </RelativeLayout>
步骤 7− 将以下代码添加到 androidManifest.xml
示例
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="app.com.q1"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
让我们尝试运行您的应用程序。假设您已将实际的 Android 移动设备连接到电脑。要从 Android Studio 运行该应用程序,请打开项目的某个活动文件,然后点击工具栏上的"运行"
图标。选择您的移动设备作为选项,然后勾选将显示默认屏幕的移动设备。



