web-dev-qa-db-fra.com

Combobox dans Android

J'ai besoin de quelque chose comme une combobox dans l'accès dans Android, je veux choisir le client par nom, mais en arrière-plan, l'identifiant doit être choisi. comment faire?

14
Mark

Dans Android les comboboxes sont appelées spinner. Néanmoins, gnugu a publié sur son blog sa propre implémentation d'un combobox. http://www.gnugu.com/node/57 =

Un exemple simple de fileur serait le suivant. Tout d'abord, modifiez votre code XML avec quelque chose comme ça

Spinner Android:id="@+id/Spinner01"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"

Votre Java devrait inclure quelque chose comme ça, les options sont très intuitives. Si vous utilisez Eclipse, il vous proposera quelques options

public class SpinnerExample extends Activity {
    private String array_spinner[];
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // Here come all the options that you wish to show depending on the
        // size of the array.
        array_spinner=new String[5];
        array_spinner[0]="option 1";
        array_spinner[1]="option 2";
        array_spinner[2]="option 3";
        array_spinner[3]="option 4";
        array_spinner[4]="option 5";
        Spinner s = (Spinner) findViewById(R.id.Spinner01);
        ArrayAdapter adapter = new ArrayAdapter(this,
        Android.R.layout.simple_spinner_item, array_spinner);
        s.setAdapter(adapter);
    }
}
25
eLobato

Une solution alternative au besoin de lier l'ID client à l'article sélectionné.

Pour avoir un sélecteur simple avec du texte, vous devez utiliser les ressources du tableau Configurer le Spinner en XML

<Spinner Android:id="@+id/spinner"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:entries="@array/colors"/>

Si vous avez besoin de plus de données liées au spinner, vous pouvez utiliser des objets pour remplir le spinner. La fonctionnalité par défaut d'un ArrayAdapter est d'appeler toString () sur n'importe quel objet et de le transmettre à la vue.

if (item instanceof CharSequence) {
    text.setText((CharSequence)item);
} else {
    text.setText(item.toString());
}

Vous pouvez implémenter toString () dans votre objet et il s'affichera correctement dans le spinner. Ensuite, pour récupérer les données du tableau, vous pouvez ajouter un gestionnaire sur ItemSelected et récupérer l'objet à partir du tableau d'origine ou de l'ArrayAdapter.

ArrayAdapter adapter = new ArrayAdapter(activity, Android.R.layout.simple_spinner_item, arrayOfObjects);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
    {
        Log.d(arrayOfObjects[position]._id);
    }

});
2
Steven