I have an array of Strings I'm populating a Spinner object with. However, I'd like to attach an ID to each element of the Spinner, so when the user selects an item, I have its ID to use to save to some other piece of data. How can I do this?
Create a class StringWithTag and use in place of the string name in the list like so :-
public class StringWithTag { public String string; public Object tag; public StringWithTag(String stringPart, Object tagPart) { string = stringPart; tag = tagPart; } @Override public String toString() { return string; } }
in the add items to spinner part :-
List<StringWithTag> list = new ArrayList<StringWithTag>(); list.add(new StringWithTag("Oldman", "12345")); list.add(new StringWithTag("Umpire", "987654")); list.add(new StringWithTag("Squad", "ABCDEE")); ArrayAdapter<StringWithTag> adap = new ArrayAdapter<StringWithTag> (this, android.R.layout.simple_spinner_item, list); .... ....
in the listener :-
public void onItemSelected(AdapterView<?> parant, View v, int pos, long id) { StringWithTag s = (StringWithTag) parant.getItemAtPosition(pos); Object tag = s.tag; }
voila! }
What do you mean by id. You can use ArrayAdapter to populate the Spinner. When item is selected just get the element from the adapter and save the data you want.
Spinner spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter<MyObject> adapter = ... // initialize the adapter adapter.setDropDownViewResource(android.R.layout.some_view); spinner.setAdapter(adapter);
and when item is selected
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { MyObject selected = parent.getItemAtPosition(pos); // save any data relevant with selected item }
If you are storing your data in db you can use CursorAdapter and in onItemSelected to fetch the selected item id from the cursor.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With