16 janvier 2014

Comment configurer un Spinner (Liste déroulante) sur Android

Par Jean-Marc Amon

Le développement sous Android se fait nativement en Java même si maintenant on peut s’y prendre autrement. Comme vous le savez, Java est très populaire avec une très forte communauté pour vous aider dans les éventuelles et inévitables difficultés lorsque vous développez, c’est aussi ce qui fait la force d’un langage.

Une amie m’a demandé récemment de lui faire un tutoriel sur l’utilisation de listes déroulantes sous Android et c’est ce tutoriel que je partage avec vous pour vous aider aussi si les listes déroulantes sous Android, connu sous le nom Spinner, vous cause à vous aussi des problèmes. Je vous fourni un code source commenté pour permettre de comprendre dans un exemple.

Ajout du Spinner au layout

Mon fichier layout se nomme main.xml et j’ai déclarer un widget Spinner avec pour id spinner comme ceci

<Spinner
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:id="@+id/spinner"
 />;

Fichier MainActivity.java

package com.marclabs.exemples.spinner;

import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ExempleSpinnerActivity extends Activity {

    Spinner spinner;
        @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        //Récupération du Spinner déclaré dans le fichier main.xml de res/layout
        spinner = (ListView) findViewById(R.id.spinner);
                //Création d'une liste d'élément à mettre dans le Spinner(pour l'exemple)
        List exempleList = new ArrayList();
        exemple.add("Assinie");
        exemple.add("Bassam");
        exemple.add("Abidjan");

        /*Le Spinner a besoin d'un adapter pour sa presentation alors on lui passe le context(this) et
                un fichier de presentation par défaut( android.R.layout.simple_spinner_item)
        Avec la liste des elements (exemple) */
        ArrayAdapter adapter = new ArrayAdapter(
                     this,
                     android.R.layout.simple_spinner_item,
                     exempleList
                 );


               /* On definit une présentation du spinner quand il est déroulé         (android.R.layout.simple_spinner_dropdown_item) */
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
               //Enfin on passe l'adapter au Spinner et c'est tout
        spinner.setAdapter(adapter);

    }
}