Quelle est la bonne façon de mettre en œuvre des paires clé-valeur dans Spinner android
Est-ce la bonne façon de mettre en œuvre des paires clé-valeur pour un Spinner 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;
}
}
- J'ai besoin de cette et place d'une simple bibliothèque qui fait exactement ça, Spinner avec des clés et des valeurs: github.com/delight-im/Android-KeyValueSpinner
Vous devez vous connecter pour publier un commentaire.
de cette manière.
je l'utilise assez souvent-je utiliser mon propre adaptateur (héritant de BaseAdpater).
Une autre façon serait de b comme ci-dessus pour avoir un indice (0,1,2 etc ) mappd à une valeur et lorsque vous recevez un élément, obtenir de l'indice du bien de sorte que vous pouvez récupérer la valeur fro ml de la carte.
J'aime que l'option de moins en moins...
J'ai créé une table de hachage adaptateur pour une utilisation dans ces scénarios. Voir aussi l'exemple du projet ici
Afin d'éviter d'atteindre de nouveau dans
items[]
de l'auditeur à l'utilisationgetItemAtPosition
qui renvoie un Objet de la Carte. Pour accéder à laMyData
méthodes, vous devez jeter l'objet comme suit:Créer une carte des valeurs-clés, et de prendre une valeur dans onItemSelected(vous pouvez obtenir "clé" via spinner.getAdapter().getItem(position)).