2010-12-29 2 views
0

EDIT: Veuillez ignorer cette question - J'ai réussi à la résoudre d'une manière qui fonctionne bien pour ce dont j'ai besoin (voir ma propre réponse ci-dessous).Besoin d'aide avec une configuration personnalisée Spinner/ArrayAdapter

J'ai une classe WeatherSpinner qui étend Spinner. La classe montre les noms de région que j'ai fait à l'origine en utilisant un ArrayAdapter<String> mais je veux maintenant utiliser ArrayAdapter<Locale> (Locale est une classe abstraite 'vide' de mon cru).

Je reçois un ClassCastException en essayant de remplir mon ArrayAdapter avec les éléments suivants ...

protected ArrayList<?> theList; 
protected ArrayAdapter<Locale> aa = null; 
... 
protected void updateContents(ArrayList<?> list, int selectedItem) { 
    theList = list; 
    // Exception thrown on next line 
    aa = new ArrayAdapter<Locale>(theContext, android.R.layout.simple_spinner_item, 
     (Locale[]) theList.toArray()); 
    ... 

}

Je passe un objet RegionList dans updateContents() comme la 'liste' paramètre et RegionList extends ArrayList<Region> et Region extends Locale. J'ai également passé outre la méthode toString() de la région pour renvoyer une chaîne valide.

Qu'est-ce que je ne vois pas ici? Est-ce que je me trompe sur la façon dont fonctionne ArrayList<?>.toArray()?

Répondre

0

OK, résolu.

méthode de ArrayList comme suit

je devais utiliser le toArray (T [] CONTENU) ...

Locale[] locArray = new Locale[theList.size()]; 
locArray = (Locale[]) theList.toArray(locArray); 
aa = new ArrayAdapter<Locale>(theContext, android.R.layout.simple_spinner_item, 
     locArray); 
Questions connexes