¿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.