Is this the correct way to implement key-value pair for a Spinner in Android?
package com.mypackage import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Spinner; import android.widget.ArrayAdapter; import android.widget.AdapterView; import android.widget.TextView; public class SpinnerAndAdapter extends Activity { TextView valueTextView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); valueTextView = (TextView)findViewById( R.id.selected ); Spinner s = (Spinner)findViewById(R.id.spinner); final MyData items[] = new MyData[3]; items[0] = new MyData( "key1","value1" ); items[1] = new MyData( "key2","value2" ); items[2] = new MyData( "key3","value3" ); ArrayAdapter<MyData> adapter = new ArrayAdapter<MyData>( this, android.R.layout.simple_spinner_item, items ); adapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item); s.setAdapter(adapter); s.setOnItemSelectedListener( new AdapterView.OnItemSelectedListener() { public void onItemSelected( AdapterView<?> parent, View view, int position, long id) { MyData d = items[position]; valueTextView.setText( d.getValue() ); } public void onNothingSelected(AdapterView<?> parent) { } } ); } class MyData { public MyData( String spinnerText, String value ) { this.spinnerText = spinnerText; this.value = value; } public String getSpinnerText() { return spinnerText; } public String getValue() { return value; } public String toString() { return spinnerText; } String spinnerText; String value; } }
this is one way. i use it quite a lot though i use my own adapter (inheriting from BaseAdpater). Another way would b like the above to have an index (0,1,2 etc ) mappd to a value and when you get an item get it's index a well so you can retrieve it's value fro mthe map. I like that option less...
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