Ali Haider
Ali Haider

Reputation: 17

Show the value of spinner in string instead of integer?

I want to show the value of spinner in string instead of integer. Right now it is showing integer like '0','1'.

Setting activity:

public class Setting extends Activity {
     bloodtype = (Spinner) findViewById(R.id.spinner2);
     ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,getResources().getStringArray(R.array.blood_groups_arrays));
     adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
     bloodtype.setAdapter(adapter2);
     bloodtype.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

         /**
          * Called when a new item is selected (in the Spinner)
          */
         public void onItemSelected(AdapterView<?> parent,
             View view, int position, long id) {
                 sharedpreferences.edit().putString(BloodType, parent.getItemAtPosition(position).toString()).commit();
             }

             public void onNothingSelected(AdapterView<?> parent) {
             // Do nothing.
             }
     });

    if(sharedpreferences.contains(BloodType)) {
        bloodtype.setSelection(sharedpreferences.getString(BloodType, "DEFAULT"));
    }
}

Calling its value in main activity:

if(sharedpreferences.contains(Setting.BloodType)) {                 
    show.setText(""+sharedpreferences.getString(Setting.BloodType, "DEFAULT"));
}

Upvotes: 0

Views: 97

Answers (2)

Onik
Onik

Reputation: 19969

In order to store a value of array you populated your spinner with in SharedPreferences use the following line in onItemSelected() method:

sharedpreferences.edit().putString(BloodType, parent.getItemAtPosition(position).toString()).commit();

Note: BloodType has to be of String type, because it plays a role of a key in key-value pair of SharedPreferences.

Upvotes: 1

Illegal Argument
Illegal Argument

Reputation: 10338

Taken from my working project it should work:

adapterSpinner = new ArrayAdapter<String>(yourContenxt,
                android.R.layout.simple_list_item_1, yourDataSource);
        spinnerProfileType.setAdapter(adapterSpinner);

As you are using a string array you can set the spinner items in xml too by using:

android:entries = "@array/your_string_entry"

Upvotes: 0

Related Questions