¿Cómo configurar el elemento seleccionado de Spinner por valor y no por posición en Android?

Spinner se usa en muchas aplicaciones de Android para mostrar múltiples opciones dentro de una lista desplegable y el usuario podrá seleccionar una opción específica de la lista dada. El elemento predeterminado que se selecciona dentro de la rueda giratoria es el primer elemento dentro de la lista que crearemos para que se muestre dentro de la rueda giratoria. Podemos configurar el elemento específico seleccionado dentro del control giratorio con la ayuda de la posición de ese elemento dentro de la lista. En este artículo, veremos cómo configurar el elemento seleccionado de la rueda giratoria por valor y no por posición. 

Implementación paso a paso

Paso 1: crea un nuevo proyecto en Android Studio

Para crear un nuevo proyecto en Android Project solo consulte este artículo sobre Cómo crear un nuevo proyecto en Android Studio . El código se ha proporcionado tanto en Java como en el lenguaje de programación Kotlin para Android.

Paso 2: Trabajando con activity_main.xml

Vaya a aplicación > res > diseño > actividad_principal.xml y agréguele el siguiente código. Se agregan comentarios en el código para conocer en detalle. 

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:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >
  
    <!-- on below line we are creating a text for heading of our app -->
    
    <TextView
        android:id="@+id/idTVHeading"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@id/idLanguageSpinner"
        android:layout_margin="20dp"
        android:gravity="center"
        android:padding="4dp"
        android:text="Spinner in Android"
        android:textAlignment="center"
        android:textColor="@color/purple_200"
        android:textSize="20sp"
        android:textStyle="bold" />
  
    <!-- on below line we are creating a spinner -->
    
    <Spinner
        android:id="@+id/idLanguageSpinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_margin="10dp"
        android:padding="10dp" />
  
</RelativeLayout>

Paso 3: trabajar con el archivo MainActivity

Vaya a aplicación > java > nombre del paquete de su aplicación > archivo MainActivity.kt y agréguele el siguiente código. Se agregan comentarios en el código para conocer en detalle. 

Kotlin

import android.os.Bundle
import android.view.View
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.Spinner
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity(), AdapterView.OnItemSelectedListener {
  
    // on below line we are creating variable for spinner.
    lateinit var languageSpinner: Spinner
  
    // on below line we are creating a variable for our list of data to be displayed in spinner.
    var languages =
        arrayOf<String>("C++", "Java", "Kotlin", "JavaScript", "Python", "PHP", "C#", "C")
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // on below line we are initializing spinner with ids.
        languageSpinner = findViewById(R.id.idLanguageSpinner)
  
        // on below line we are adding click listener for our spinner
        languageSpinner.onItemSelectedListener = this
  
        // on below line we are initializing adapter for our spinner
        val adapter: ArrayAdapter<CharSequence> =
            ArrayAdapter(this, android.R.layout.simple_spinner_item, languages)
  
        // on below line we are setting drop down view resource for our adapter.
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
  
        // on below line we are setting adapter for spinner.
        languageSpinner.adapter = adapter
  
        // on below line we are creating a variable to which we have to set our spinner item selected.
        val selection = "Python"
  
        // on below line we are getting the position of the item by the item name in our adapter.
        val spinnerPosition: Int = adapter.getPosition(selection)
  
        // on below line we are setting selection for our spinner to spinner position.
        languageSpinner.setSelection(spinnerPosition)
  
    }
  
    override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
        // on below line we are displaying toast message for selected item.
        Toast.makeText(this, "" + languages.get(position) + " Selected..", Toast.LENGTH_SHORT)
            .show()
    }
  
    override fun onNothingSelected(parent: AdapterView<*>?) {
        
    }
}

Java

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
  
import java.util.Arrays;
  
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
  
    // on below line we are creating variable for spinner.
    Spinner languageSpinner;
    // on below line we are creating a variable for our list of data to be displayed in spinner.
    String[] languages = {"C++", "Java", "Kotlin", "JavaScript", "Python", "PHP", "C#", "C"};
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // on below line we are initializing spinner with ids.
        languageSpinner = (Spinner) findViewById(R.id.idLanguageSpinner);
  
        // on below line we are initializing adapter for our spinner
        ArrayAdapter<CharSequence> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, languages);
  
        // on below line we are setting drop down view resource for our adapter.
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  
        // on below line we are setting adapter for spinner.
        languageSpinner.setAdapter(adapter);
  
        // on below line we are adding click listener for our spinner
        languageSpinner.setOnItemSelectedListener(this);
  
        // on below line we are creating a variable to which we have to set our spinner item selected.
        String selection = "Python";
  
        // on below line we are getting the position of the item by the item name in our adapter.
        int spinnerPosition = adapter.getPosition(selection);
  
        // on below line we are setting selection for our spinner to spinner position.
        languageSpinner.setSelection(spinnerPosition);
    }
  
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        // on below line we are displaying toast message for selected item
        Toast.makeText(MainActivity.this, "" + languages[position] + " Selected..", Toast.LENGTH_SHORT).show();
    }
  
    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {
  
    }
}

Ahora ejecute su aplicación para ver el resultado. 

Producción:

Publicación traducida automáticamente

Artículo escrito por chaitanyamunje 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 *