Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the correct way to implement key-value pair in Spinner in android

Tags:

android

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;     } } 
like image 495
Arunabh Das Avatar asked Mar 24 '11 20:03

Arunabh Das


1 Answers

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

like image 185
codeScriber Avatar answered Oct 07 '22 17:10

codeScriber