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

Alan Lai
fuente
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.

Bhavin
fuente
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) {
    }
});
santoshpatmca
fuente
¿Pero cómo conseguir el artículo 0?
Alok Rajasukumaran
11

Puede obtener el elemento seleccionado de Spinner usando,

interested.getSelectedItem().toString();
Lalit Poptani
fuente
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.

Mduarth
fuente
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
        }
    });
sush
fuente
6

Obtenga el artículo seleccionado con Kotlin:

spinner.selectedItem.toString()
Westy92
fuente
5

Además de lo sugerido,

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

Tu puedes hacer,

String Text = String.valueOf(mySpinner.getSelectedItem());
Max
fuente
3

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

interested.getSelectedItem().toString();
Andy
fuente
3

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

Prueba getSelectedItem () :

spinner.getSelectedItem()
ngesh
fuente
2

La mejor forma de hacer esto es: -

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

puede consultar los documentos aquí: Spinners

Deepak Vardhan
fuente
2

prueba esto

sp1 = String.valueOf(spinner.getSelectedItem());
Thasreef Mogral
fuente
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]
    }

}
Hanny
fuente
Nadie preguntó aquí sobre kotlin.
user3099225
1

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

GedankenNebel
fuente
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) {

        }
    });
Malith Ileperuma
fuente