¿Cómo obtener el valor del elemento seleccionado de Spinner en la cadena?


81

Tengo 5 Spinners. Para resumir esto.

Esto es Spinner en xml

<Spinner
            android:id="@+id/text_interested"
            android:layout_span="2"
            android:layout_width="wrap_content"
            android:layout_height="60px"
            android:entries="@array/interestedarrays"
            android:prompt="@string/interestedprompt" />

Esto es Spinner en Java

submitbtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
interested.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                        public void onItemSelected(
                                AdapterView<?> adapterView, View view,
                                int i, long l) {
                            interesting = interested.getItemAtPosition(i).toString();
                        }

                        public void onNothingSelected(
                                AdapterView<?> adapterView) {

                        }
                    });
    }
});

Explicación aquí:

La página tiene un botón. Este botón leerá los datos de la ruleta cuando se presione. Verifiqué la salida con esto

System.out.println(interested.getItemAtPosition(i).toString());

No me dio nada ni siquiera nulo.

¿Cómo recuperar el valor y encadenarlo?


Estoy seguro de que desea un elemento seleccionado de una ruleta cada vez que el usuario hace clic en un botón
— Paresh Mayani

Establezca el setOnItemSelectedListener fuera de onClick de su botón y dentro del método Onclick use este interesado.getSelectedItem (). ToString ();
— KK_07k11A0585

gracias, mi error fue poner al oyente dentro del botón oyente, por eso no respondo
— Alan Lai

1
bienvenido :) explora demostraciones de API ... puedes obtener mejores ejemplos allí
— KK_07k11A0585

Respuestas:


224

Prueba esto:

String text = mySpinner.getSelectedItem().toString();

De esta manera, puede obtener valor para diferentes Spinners.


27
String Text = mySpinner.getSelectedItem().toString();

O

mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        Object item = parent.getItemAtPosition(position);
    }
    public void onNothingSelected(AdapterView<?> parent) {
    }
});

¿Pero cómo conseguir el artículo 0?
— Alok Rajasukumaran

11

Puede obtener el elemento seleccionado de Spinner usando,

interested.getSelectedItem().toString();

7

Si su Spinner fue poblado por el cursor SQLite, entonces la solución es:

Spinner mySpin = (Spinner) findViewById(R.id.myspin);
mySpin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {  
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
           SQLiteCursor item = (SQLiteCursor) parent.getItemAtPosition(position);
           String value = String.valueOf(item.getString(0));
           Toast.makeText(getApplicationContext(), "The option is:" + value , Toast.LENGTH_SHORT).show(); 
 }

PD: En item.getString(0)-> 0 es el índice de la columna en el cursor que desea obtener.


Funciona genial. ¿Cómo se usa "valor" fuera del miembro onItemSelected?
— MarkT

6

prueba esto

 final Spinner cardStatusSpinner1 = (Spinner) findViewById(R.id.text_interested);
    String cardStatusString;
    cardStatusSpinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent,
                View view, int pos, long id) {
            cardStatusString = parent.getItemAtPosition(pos).toString();
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });

 final Button saveBtn = (Button) findViewById(R.id.save_button);
    saveBtn .setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            System.out.println("Selected cardStatusString : " + cardStatusString ); //this will print the result
        }
    });

6

Obtenga el artículo seleccionado con Kotlin:

spinner.selectedItem.toString()

5

Además de lo sugerido,

String Text = mySpinner.getSelectedItem().toString();

Tu puedes hacer,

String Text = String.valueOf(mySpinner.getSelectedItem());

3

Cuando elige cualquier valor de la ruleta, obtiene el valor seleccionado,

interested.getSelectedItem().toString();

3

Creo que desea el elemento seleccionado de la ruleta cuando se hace clic en el botón.

Prueba getSelectedItem () :

spinner.getSelectedItem()

2

La mejor forma de hacer esto es: -

String selectedItem = spinner.getSelectedItem().toString();

puede consultar los documentos aquí: Spinners



2

Dado que el último lenguaje para el desarrollo de Android es Kotlin. Aquí está cómo lo hacemos en Kotlin usando un objeto anónimo.

spinnerName?.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
    override fun onNothingSelected(parent: AdapterView<*>?) {
       println("Nothing Selected")
    }

    override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
       val selectedString = yourList[position]
    }

}

Nadie preguntó aquí sobre kotlin.
— user3099225

1

Al implementar SpinnerAdapter para su objeto adaptador que uso interested.getItem(i).toString()


0
    spinnerType = (AppCompatSpinner) findViewById(R.id.account_type);
    spinnerType.setPrompt("Select Type");

    spinnerType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            TypeItem clickedItem = (TypeItem) parent.getItemAtPosition(position);
            String TypeName = clickedItem.getTypeName();
            Toast.makeText(AddAccount.this, TypeName + " selected", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.