web-dev-qa-db-fra.com

Android: Créer spinner par programme à partir d'un tableau

Je suis tout nouveau dans Android et j'essaie de créer un spinner par programmation et de le nourrir avec les données d'un tableau, mais Eclipse me donne un avertissement que je ne peux pas gérer.

Voici ce que j'ai eu:

Cet ArrayList contient les éléments qui devraient être dans le disque (sera rempli à partir d'un fichier plus tard):

ArrayList<String> spinnerArray = new ArrayList<String>();

C'est le code que j'ai trouvé sur un site qui devrait créer le spinner:

Spinner spinner = new Spinner(this);
ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(this,
                Android.R.layout.simple_spinner_dropdown_item,
                spinnerArray);
spinner.setAdapter(spinnerArrayAdapter);

Maintenant, la deuxième ligne (ArrayAdapter ...) me donne un avertissement dans Eclipse disant "ArrayAdapter is a raw type... References to generic type ArrayAdapter<T> should be parameterized", je ne sais pas comment résoudre ce problème (ni ce que cela signifie en premier lieu :)).

C'est juste un avertissement et l'application semble fonctionner correctement, mais j'aimerais quand même comprendre ce qui ne va pas et le réparer. Tout indice est apprécié.

Salutations, Select0r

177
Select0r

ArrayAdapter<String> devrait fonctionner.

c'est à dire.:

Spinner spinner = new Spinner(this);
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>
            (this, Android.R.layout.simple_spinner_item,
           spinnerArray); //selected item will look like a spinner set from XML
spinnerArrayAdapter.setDropDownViewResource(Android.R.layout
                                                     .simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter); 
365

De la même manière avec Array

// Array of choices
String colors[] = {"Red","Blue","White","Yellow","Black", "Green","Purple","Orange","Grey"};

// Selection of the spinner
Spinner spinner = (Spinner) findViewById(R.id.myspinner);

// Application of the Array to the Spinner
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,   Android.R.layout.simple_spinner_item, colors);
spinnerArrayAdapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item); // The drop down view
spinner.setAdapter(spinnerArrayAdapter);
105
Yann Masoch

Cela a fonctionné pour moi avec un string-array nommé shoes chargé à partir des ressources du projet:

Spinner spinnerCountShoes = (Spinner)findViewById(R.id.spinner_countshoes);
ArrayAdapter<String> spinnerCountShoesArrayAdapter = new ArrayAdapter<String>(this, Android.R.layout.simple_spinner_dropdown_item, getResources().getStringArray(R.array.shoes));
spinnerCountShoes.setAdapter(spinnerCountShoesArrayAdapter);

Ceci est mon fichier de ressources (res/values/arrays.xml) avec le tableau de chaînes:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="shoes">
        <item>0</item>
        <item>5</item>
        <item>10</item>
        <item>100</item>
        <item>1000</item>
        <item>10000</item>
    </string-array>
</resources>

Avec cette méthode, il est plus facile de le rendre multilingue (si nécessaire).

54
Bruno Bieri

Cela a réellement fonctionné pour moi

    Spinner spinner = new Spinner(this);
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
            this, Android.R.layout.simple_spinner_item, spinnerArray);
    spinnerArrayAdapter.setDropDownViewResource( Android.R.layout.simple_spinner_dropdown_item );

    spinner = (Spinner) findViewById( R.id.spinner );
    spinner.setAdapter(spinnerArrayAdapter);
36
Opy

ça marche pour moi: -

String[] array = {"A", "B", "C"};
String abc = "";


Spinner spinner = new Spinner(getContext());
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(getContext(), Android.R.layout.simple_spinner_item, array); //selected item will look like a spinner set from XML
spinnerArrayAdapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter);

J'utilise un fragment.

6
Arish Khan

En kotlin, vous pouvez le faire de cette façon:

val values = arrayOf(
    "cat",
    "dog",
    "chicken"
)

ArrayAdapter(
    this,
    Android.R.layout.simple_spinner_item,
    values
).also {
    it.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item)
    spinner.adapter = it
}
1
Micer