Android Spinner avec différentes mises en page pour le déroulant “état” et “fermé”?
J'ai un Android Spinner vue dans ma mise en page. Je voudrais que spinner pour n'afficher qu'un seul élément de texte lorsqu'il est fermé, mais, lorsque l'utilisateur clique sur celle-ci (c'est à dire ouvre le compteur de dialogue) je voudrais afficher des informations plus détaillées pour chaque élément, y compris une icône et une description supplémentaire affichage de texte. Comme il est maintenant le compteur affiche la même mise en page (icône, le titre + description) dans les deux états.
Si je joindre un ArrayAdapter pour le compteur, puis-je accéder à quelque chose appelé "setDropDownViewResource" mais ce n'est pas forcément ce dont j'ai besoin, depuis mon spinner de l'extraction des données à partir d'un Curseur non pas à partir d'un Tableau de toute sorte (j'ai d'ores et déjà créé ma propre carte, l'extension de BaseAdapter).
Quelqu'un qui peut m'aider?
- Veuillez voir ma réponse à stackoverflow.com/questions/4880413/...
- stackoverflow.com/questions/4880413/...
Vous devez vous connecter pour publier un commentaire.
Vous devez créer un personnalisé
Carte
classe pour le Spinner et remplacer les deux méthodesgetView()
normale de vue fermée etgetDropDownView()
de la liste déroulante afficher. Les deux méthodes doivent retourner unView
objet pour un seul élément.Ont un coup d'oeil à ce tutoriel il pourrait vous aider à démarrer.
J'ai eu des problèmes aussi. Au lieu d'écraser la classe, je dispose d'un moyen plus facile de le faire.
Mais d'abord, vous devez comprendre la différence entre l'id de la ressource dans le constructeur d'adaptateur, et l'autre en
setDropDownViewResource(...)
. Par exemple,R.layout.actionbar_dropdown
est le style de spinner, etR.layout.actionbar_list_item
pour chaque élément de la liste.J'ai utilisé SimpleAdapter ici, car si j'utilise ArrayAdapter, le xml ne peut être qu'un seul TextView.
R.layout.actionbar_list_item
contient un TextView dont l'id estevent_id
et une ImageView dont l'id esticon
.R.layout.actionbar_dropdown
est presque exactement la même queactionbar_list_item
, mais la visibilité de l'ImageView de cette dernière est fixé à ALLÉ.De cette façon, chaque élément de la liste dispose d'un textview et une imageview, mais vous n'en verrez un textview sur la touche de navigation.
En utilisant le code du tutoriel lié par Flo, j'ai créé le suivant CustomSpinnerAdapter afin de montrer deux différents ensembles de chaînes de caractères, lorsque les éléments sont affichés, et un non. J'espère que cela aide quelqu'un.
Et l'utilisation à l'intérieur d'un Fragment de:
Enfin, la mise en page pour le spinner article:
spinner_item.xml
convertView
paramètre dans votregetView()
etgetDropDownView()
méthodes.Définit uniquement la liste déroulante afficher de ressources avec votre tracé alternatif:
Pour moi, c'est seulement une mise en page avec un rembourrage supplémentaire à gauche, parce que mon fond de spinner est un arrondi drawable et nécessitent de cet espace supplémentaire.
Appelez simplement setUpSpinner() la méthode après l'obtention de référence à spinner
//c'est ici setUpSpinner méthode