Cum să utilizați Spinner cu AdapterView și ArrayAdapter Kotlin
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
<?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.