Kotlin笔记(45) — ListView 的使用

2021-01-30  本文已影响0人  奔跑的佩恩

前言

Android开发过程中,我们经常会用到列表控件,今天就向大家介绍一款列表控件ListView

今天涉及知识:

  1. ListView简介
  2. ListView在Activity中使用
  3. 效果图和项目结构图
  4. 适配器ListAdapter源码

先来波效果图:


效果图.gif

一. ListView简介

ListView主要用于展示列表信息,常与适配器BaseAdapter结合使用。

二. ListView在Activity中使用

首先在MainActivty对应的布局activity_main.xml中添加ListView控件,则activity_main.xml布局代码如下:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/color_f2f2f2"
    tools:context=".ui.MainActivity">

    <TextView
        android:id="@+id/mTvTest"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:gravity="center"
        android:text="测试"
        android:textColor="@color/black"
        android:textSize="16sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/mBtnTest"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAllCaps="false"
        android:layout_marginTop="10dp"
        android:text="kotlin显示dialog"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/mTvTest" />

    <ListView
        android:id="@+id/mListView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/mBtnTest"/>

</androidx.constraintlayout.widget.ConstraintLayout>

下面贴出ListViewMainActivity中使用代码:

open class MainActivity : AppCompatActivity(), View.OnClickListener {

    private var nameList:MutableList<String> = mutableListOf("幼稚园","小学","初中","高中","大学")

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        initData()
        setListener()
    }

    private fun initData() {
        //初始化适配器
        var adapter:ListAdapter<String> = ListAdapter(nameList,this)
        //ListView设置适配器
        mListView.adapter=adapter

        //item点击事件
        mListView.setOnItemClickListener(object:AdapterView.OnItemClickListener{
            override fun onItemClick(
                parent: AdapterView<*>?,
                view: View?,
                position: Int,
                id: Long
            ) {
                toast("点击了第${position}项,值为${nameList[position]}")
            }

        })
    }

    private fun setListener() {
        mBtnTest.setOnClickListener(this@MainActivity)

    }

    override fun onClick(v: View) {
       when(v.id){
           R.id.mBtnTest -> {

           }
       }
    }

}

三.效果图和项目结构图

效果图.gif 项目结构图.png

四. 适配器ListAdapter源码

下面给出ListView对应适配器ListAdapter源码:

上一篇 下一篇

猜你喜欢

热点阅读