Obtener el texto de los elementos seleccionados?

¿Cómo obtener el texto del elemento seleccionado?

Tengo que obtener el texto sobre el elemento seleccionado en mi girador cuando hago clic en el botón guardar. Necesito el texto, no el índice.

Spinner spinner = (Spinner)findViewById(R.id.spinner); String text = spinner.getSelectedItem().toString(); 
 TextView textView = (TextView)mySpinner.getSelectedView(); String result = textView.getText().toString(); 

Debes usar el índice y el adaptador para encontrar el texto que tienes

Mira este ejemplo de Spinner

 public class MyOnItemSelectedListener implements OnItemSelectedListener { public void onItemSelected(AdapterView parent, View view, int pos, long id) { Toast.makeText(parent.getContext()), "The planet is " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show(); } public void onNothingSelected(AdapterView parent) { // Do nothing. } } 

utilizar esta

 import java.util.ArrayList; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.text.Editable; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.Toast; public class dynamic_spinner_main extends Activity { private Spinner m_myDynamicSpinner; private EditText m_addItemText; private ArrayAdapter m_adapterForSpinner; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_spinner); /////////////////////////////////////////////////////////////// //grab our UI elements so we can manipulate them (in the case of the Spinner) // or add listeners to them (in the case of the buttons) m_myDynamicSpinner = (Spinner)findViewById(R.id.dynamicSpinner); m_addItemText = (EditText)findViewById(R.id.newSpinnerItemText); Button addButton = (Button)findViewById(R.id.AddBtn); Button clearButton = (Button)findViewById(R.id.ClearBtn); //////////////////////////////////////////////////////////////// //create an arrayAdapter an assign it to the spinner m_adapterForSpinner = new ArrayAdapter(this, android.R.layout.simple_spinner_item); m_adapterForSpinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); m_myDynamicSpinner.setAdapter(m_adapterForSpinner); m_adapterForSpinner.add("gr"); m_myDynamicSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parentView, View selectedItemView, int position, long id) { // your code here Intent mIntent=new Intent(dynamic_spinner_main.this,sampleLocalization.class); mIntent.putExtra("lang", m_myDynamicSpinner.getItemIdAtPosition(position)); System.out.println("Spinner value...."+m_myDynamicSpinner.getSelectedItem().toString()); startActivity(mIntent); } @Override public void onNothingSelected(AdapterView parentView) { // your code here } }); //////////////////////////////////////////////////////////////// //add listener for addButton addButton.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { addNewSpinnerItem(); } }); //////////////////////////////////////////////////////////////// //add listener for addButton clearButton.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { clearSpinnerItems(); } }); } private void addNewSpinnerItem() { CharSequence textHolder = "" + m_addItemText.getText(); m_adapterForSpinner.add(textHolder); } private void clearSpinnerItems() { m_adapterForSpinner.clear(); m_adapterForSpinner.add("dummy item"); } } 

main_spinner.xml

        

Spinner le devuelve el valor entero para la matriz. Debe recuperar el valor de cadena basado en el índice.

 Spinner MySpinner = (Spinner)findViewById(R.id.spinner); Integer indexValue = MySpinner.getSelectedItemPosition(); 

Versión de una línea:

 String text = ((Spinner)findViewById(R.id.spinner)).getSelectedItem().toString(); 

ACTUALIZACIÓN: puede eliminar la conversión si usa SDK 26 (o más reciente) para comstackr su proyecto.

 String text = findViewById(R.id.spinner).getSelectedItem().toString(); 
 spinner_button.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterViewarg0, View view, int arg2, long arg3) { String selected_val=spinner_button.getSelectedItem().toString(); Toast.makeText(getApplicationContext(), selected_val , Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView arg0) { // TODO Auto-generated method stub } }); } 
 TextView textView = (TextView) spinActSubTask.getSelectedView().findViewById(R.id.tvProduct); String subItem = textView.getText().toString(); 

Para spinners basados ​​en un CursorAdapter:

  • obtener el id del elemento seleccionado: spinner.getSelectedItemId()
  • busque el nombre del elemento de su base de datos, por ejemplo:

     public String getCountryName(int pId){ Cursor cur = mDb.query(TABLE, new String[]{COL_NAME}, COL_ID+"=?", new String[]{pId+""}, null, null, null); String ret = null; if(cur.moveToFirst()){ ret = cur.getString(0); } cur.close(); return ret; } 

Para aquellos que tienen hilandero basado en HashMap :

 ((HashMap)((Spinner)findViewById(R.id.YourSpinnerId)).getSelectedItem()).values().toArray()[0].toString(); 

Si está en un Fragmento, un Adaptador o una Clase que no sean actividades principales, use esto:

 ((HashMap)((Spinner)YourInflatedLayoutOrView.findViewById(R.id.YourSpinnerId)).getSelectedItem()).values().toArray()[0].toString(); 

Es solo por orientación; deberías encontrar la identificación de tu vista antes del método onClick.

Después de configurar el adaptador giratorio, este código ayudará

 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView adapterView, View view, int i, long l) { Toast.makeText(getApplicationContext(), "This is " + adapterView.getItemAtPosition(i).toString(), Toast.LENGTH_LONG).show(); try { //Your task here }catch (Exception e) { e.printStackTrace(); } } @Override public void onNothingSelected(AdapterView adapterView) { } }); 
 Spinner spinner = (Spinner) findViewById(R.id.yourspinnerid); String text = spinner.getSelectedItem().toString();