Voi arăta cum să utilizați AdapterView și ArrayAdapter cu Spinner în Kotlin. Vă rog! În primul rând, importați ArrayAdapter și AdapterView.

import android.widget.AdapterView
import android.widget.ArrayAdapter


Creați aspectul

Spinner

<?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"
    tools:context=".MainActivity">

    <Spinner
        android:id="@+id/spn"
        android:layout_width="260dp"
        android:layout_height="46dp"
        android:layout_marginTop="264dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.496"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/btnAdd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="144dp"
        android:text="Adăuga"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent" />

    <EditText
        android:id="@+id/addText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName"
        android:hint="Scrie aici.."
        app:layout_constraintBottom_toTopOf="@+id/btnAdd"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.497"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/spn"
        app:layout_constraintVertical_bias="0.494" />
</androidx.constraintlayout.widget.ConstraintLayout>


Să revenim la MainActivity și să adăugăm text în spinner făcând clic pe butonul „Adugă”.

var listSpinner = ArrayList<String>()
        binding.btnAdd.setOnClickListener()
        {
            val arrayAdapter : ArrayAdapter<String> = ArrayAdapter(this, androidx.appcompat.R.layout.support_simple_spinner_dropdown_item,listSpinner)

            if(binding.addText.text.isNotEmpty())
            {
                listSpinner.add(binding.addText.text.toString())
                binding.spn.adapter = arrayAdapter
                binding.spn.setSelection(listSpinner.size-1)
            }
        }


Acum să arătăm acel element selectat prin Toast. Pentru a face acest lucru, ar trebui să cunoașteți foarte bine „Anonymous Inner Class”. Faceți clic aici pentru a vedea subiectul „Clasă interioară anonimă” în Limbă Turcă. În mod normal, nu putem moșteni nimic de la Interfețe. Putem folosi Anonymous Inner Class pentru a moșteni ceva din interfețe.

binding.spn.onItemSelectedListener = object : AdapterView.OnItemClickListener,
            AdapterView.OnItemSelectedListener {
            override fun onItemClick(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
            }

            override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
                Toast.makeText(applicationContext,binding.spn.selectedItem.toString(),Toast.LENGTH_LONG).show()
            }

            override fun onNothingSelected(p0: AdapterView<*>?) {
            }
        }


Noi moştenit AdapterView aici şi am folosit Anonymous Inner Class.