2010-05-06 8 views
151

Je suis tout nouveau sur Android et j'essaye de créer un spinner par programmation et l'alimenter avec des données d'un tableau, mais Eclipse me donne un avertissement que je ne peux pas gérer.Android: Créer un spinner par programmation à partir du tableau

Voici ce que je suis:

This ArrayList holds the elements that should be in the spinner (gets filled from a file later on):

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

C'est un code que je trouve sur un site qui devrait créer la fileuse:

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 une 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 (ou ce que cela signifie en premier lieu :)).

C'est juste un avertissement et l'application semble bien fonctionner, mais j'aimerais quand même comprendre ce qui ne va pas et y remédier. Tout indice est apprécié.

Salutations, Select0r

Répondre

321

ArrayAdapter<String> devrait fonctionner.

-à-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); 
+0

J'ai essayé, mais l'erreur change juste un peu :) 'sécurité Type: L'expression de type ArrayAdapter doit être convertie sans contrôle pour se conformer aux ArrayAdapter ' – Select0r

+2

Commentés rapidement pendant que vous la modification du message :) J'ai raté la deuxième ' ', votre code fonctionne maintenant, merci beaucoup! – Select0r

+0

comment implémenter le clic de l'élément spinner, pouvez-vous s'il vous plaît donner un exemple .. –

34

Cela a effectivement travaillé 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); 
+4

Quel est le but de ce 'Spinner spinner = nouveau Spinner (this);' quand vous faites cela spinner = (Spinner) findViewById (R.id .spinner); – mr5

+0

pourquoi erreur: aucun constructeur approprié trouvé pour ArrayAdapter (, int, DetailData) Constructeur ArrayAdapter.ArrayAdapter (Contexte, int, int, Liste ) n'est pas applicable? – user151968

99

De la même manière avec Tableau

// 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); 
+0

Je l'ai fait en utilisant un ArrayList parce que mon tableau vient d'une boucle (pas statique). – Jacksonkr

46

Cela a fonctionné pour moi avec une chaîne tableau nommé "shoes" chargé à partir des projets r essources:

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

5

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