Spinner en Kotlin

Android Spinner es una vista similar a una lista desplegable que se utiliza para seleccionar una opción de la lista de opciones. Proporciona una manera fácil de seleccionar un elemento de la lista de elementos y muestra una lista desplegable de todos los valores cuando hacemos clic en él. El valor predeterminado de la ruleta de Android será el valor seleccionado actualmente y, al usar el Adaptador , podemos vincular fácilmente los elementos a los objetos de la ruleta. Generalmente, llenamos nuestro control Spinner con una lista de elementos usando un ArrayAdapter en nuestro archivo Kotlin. Primero, creamos un nuevo proyecto siguiendo los siguientes pasos:

  1. Haga clic en Archivo , luego en Nuevo => Nuevo proyecto .
  2. Después de eso, incluya el soporte de Kotlin y haga clic en siguiente.
  3. Seleccione el SDK mínimo según su conveniencia y haga clic en el botón siguiente .
  4. Luego seleccione la actividad vacía => siguiente => finalizar .

Diferentes atributos para el widget Spinner

atributos XML Descripción
Android: identificación Se utiliza para especificar el id de la vista.
android:alineación de texto Se utiliza para la alineación del texto en la lista desplegable.
android:fondo Se utiliza para establecer el fondo de la vista.
Android: relleno Se utiliza para establecer el relleno de la vista.
Android: visibilidad Se utiliza para establecer la visibilidad de la vista.
Android: gravedad Se usa para especificar la gravedad de la vista como centro, arriba, abajo, etc.

Modificar archivo activity_main.xml

En este archivo, usamos los widgets TextView y Spinner y también configuramos sus atributos. 

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/linear_layout"
    android:gravity = "center">
 
    <TextView
        android:id="@+id/txtView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Select language:"
        android:textSize = "20dp" />
 
    <Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@id/txtView"/>
 
</LinearLayout>

Actualizar el archivo strings.xml

Aquí, actualizamos el nombre de la aplicación usando la etiqueta de string. También creamos una lista de los elementos que se utilizarán en el menú desplegable. 

XML

<resources>
    <string name="app_name">SpinnerInKotlin</string>
    <string name="selected_item">Selected item:</string>
 
    <string-array name="Languages">
        <item>Java</item>
        <item>Kotlin</item>
        <item>Swift</item>
        <item>Python</item>
        <item>Scala</item>
        <item>Perl</item>
    </string-array>
</resources>

Acceda a Spinner en el archivo MainActivity.kt

Primero, declaramos una variable languages ​​para acceder a los elementos de strings del archivo strings.xml.

val languages = resources.getStringArray(R.array.Languages)

luego, accedemos al control giratorio y configuramos ArrayAdaptor para controlar la lista de elementos.

val spinner = findViewById(R.id.spinner)
        if (spinner != null) {
            val adapter = ArrayAdapter(this,
                android.R.layout.simple_spinner_item, languages)
            spinner.adapter = adapter

Kotlin

package com.geeksforgeeks.myfirstkotlinapp
 
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.*
 
class MainActivity : AppCompatActivity() {
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        // access the items of the list
        val languages = resources.getStringArray(R.array.Languages)
 
        // access the spinner
        val spinner = findViewById<Spinner>(R.id.spinner)
        if (spinner != null) {
            val adapter = ArrayAdapter(this,
                android.R.layout.simple_spinner_item, languages)
            spinner.adapter = adapter
 
         spinner.onItemSelectedListener = object :
           AdapterView.OnItemSelectedListener {
             override fun onItemSelected(parent: AdapterView<*>,
                                         view: View, position: Int, id: Long) {
                 Toast.makeText(this@MainActivity,
                    getString(R.string.selected_item) + " " +
                         "" + languages[position], Toast.LENGTH_SHORT).show()
                }
 
                override fun onNothingSelected(parent: AdapterView<*>) {
                    // write code to perform some action
                }
            }
        }
    }
}

Archivo AndroidManifest.xml

XML

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.geeksforgeeks.myfirstkotlinapp">
 
<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>

Ejecutar como emulador:

Publicación traducida automáticamente

Artículo escrito por Praveenruhil y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *