Get spinner selected items text?

AndroidAndroid Spinner

Android Problem Overview


How to get spinner selected item's text?

I have to get the text on the item selected in my spinner when i click on the save button. i need the text not the Index.

Android Solutions


Solution 1 - Android

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

Solution 2 - Android

TextView textView = (TextView)mySpinner.getSelectedView();
String result = textView.getText().toString();

Solution 3 - Android

You have to use the index and the Adapter to find out the text you have

See this example of 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.
    }
}

Solution 4 - Android

Spinner returns you the integer value for the array. You have to retrieve the string value based of the index.

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

Solution 5 - Android

use this

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<CharSequence> 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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

	<EditText android:layout_height="wrap_content" 
			android:layout_margin="4px" 
			android:id="@+id/newSpinnerItemText" 
			android:layout_width="fill_parent"></EditText>
	<Button android:layout_height="wrap_content" 
			android:id="@+id/AddBtn" 
			android:layout_margin="4px" 
			android:layout_width="fill_parent" 
			android:text="Add To Spinner"></Button>
	<Button android:layout_height="wrap_content" 
			android:id="@+id/ClearBtn" 
			android:layout_margin="4px" 
			android:layout_width="fill_parent" 
			android:text="Clear Spinner Items"></Button>
	<Spinner android:layout_height="wrap_content" 
			android:id="@+id/dynamicSpinner" 
			android:layout_margin="4px" 
			android:layout_width="fill_parent"></Spinner>
</LinearLayout>

Solution 6 - Android

spinner_button.setOnItemSelectedListener(new OnItemSelectedListener() {
		@Override
		public void onItemSelected(AdapterView<?>arg0, 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

		}
	});

}
		

Solution 7 - Android

After set the spinner adapter this code will help

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

        }
    });

Solution 8 - Android

One line version:

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

UPDATE: You can remove casting if you use SDK 26 (or newer) to compile your project.

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

Solution 9 - Android

TextView textView = (TextView) spinActSubTask.getSelectedView().findViewById(R.id.tvProduct);

String subItem = textView.getText().toString();

Solution 10 - Android

It also can be achieved in a little safer way using String.valueOf() like so

Spinner sp = (Spinner) findViewById(R.id.sp_id);
String selectedText = String.valueOf(sp.getSelectedItem());

without crashing the app when all hell breaks loose. The reason behind its safeness is having the capability of dealing with null objects as the argument. The documentation says

>if the argument is null, then a string equal to "null"; otherwise, the value of obj.toString() is returned.

So, some insurance there in case of having an empty Spinner for example, which the currently selected item has to be converted to String.

Solution 11 - Android

For spinners based on a CursorAdapter:

  • get the selected item id: spinner.getSelectedItemId()

  • fetch the item name from your database, for example:

      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;
      }
    

Solution 12 - Android

For those have HashMap based spinner :

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

If you are in a Fragment, an Adaptor or a Class other than main activities , use this:

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

It's just for guidance; you should find your view's id before onClick method.

Solution 13 - Android

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionHarinderView Question on Stackoverflow
Solution 1 - AndroidFarhanView Answer on Stackoverflow
Solution 2 - AndroidAceView Answer on Stackoverflow
Solution 3 - AndroidcchenesonView Answer on Stackoverflow
Solution 4 - AndroidShaista NaazView Answer on Stackoverflow
Solution 5 - AndroidJazzView Answer on Stackoverflow
Solution 6 - AndroidIrfan AliView Answer on Stackoverflow
Solution 7 - AndroidAhsanView Answer on Stackoverflow
Solution 8 - AndroidMiroslav HrivikView Answer on Stackoverflow
Solution 9 - Androiduser2294100View Answer on Stackoverflow
Solution 10 - AndroidStudentView Answer on Stackoverflow
Solution 11 - AndroidYarView Answer on Stackoverflow
Solution 12 - AndroidArashView Answer on Stackoverflow
Solution 13 - AndroidFahad JadunView Answer on Stackoverflow