jok Posté(e) 23 mars 2011 Share Posté(e) 23 mars 2011 Bonjour, Je suis en train d'établir un formulaire et je souhaiterais mettre en place une liste de noms dans un Spinner. Au chargement de l'Activity, il contient bien la liste récupérée depuis une table (base de données SQLite), mais aucun nom ne s'affiche dans ce Spinner quand il est fermé, que ce soit au chargement du formulaire ou après sélection d'un nom dans la liste. Vous savez de quoi ça peut venir ? Même en essayant un android:prompt="@string/nom" dans le XML, je n'ai rien qui s'affiche... Avez-vous une idée de quoi ça peut venir ? Je peux mettre un morceau de code à disposition si ça vous aide à résoudre mon problème : <Spinner android:id="@+id/spinner" android:prompt="@string/nom" android:layout_width="200px" android:layout_height="wrap_content" android:drawSelectorOnTop="true" android:layout_toRightOf="@+id/natureprestationTV" android:layout_below="@+id/heurefinBT" /> base = new BaseSQLite(this); base.open(); Cursor c = base.listeBeneficiaires(); startManagingCursor(c); SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, c, new String[] {BaseSQLite.B_PRENOM, BaseSQLite.B_NOM}, new int[] {R.id.prenom, R.id.nom}); adapter.setDropDownViewResource(R.layout.d_beneficiaire); sp.setAdapter(adapter); sp.setOnItemSelectedListener(new A_Spinner()); base.close(); public class A_Spinner implements OnItemSelectedListener { public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { Toast.makeText(parent.getContext(), "L'ID est " + (pos+1), Toast.LENGTH_LONG).show(); // L'ID est bien sélectionné mais je n'arrive pas à retourner le résultat dans le Spinner quand il est fermé. } public void onNothingSelected(AdapterView<?> parent) { // Ne rien faire } } Merci d'avance pour votre aide ! :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
moritan Posté(e) 23 mars 2011 Share Posté(e) 23 mars 2011 A quoi te sert ta classe A_Spinner ? Regarde la doc officiel => http://developer.android.com/guide/tutorials/views/hello-spinner.html Normalement tu n'a rien d'autre à faire que ton setAdapter. Si tu rajoute un itemselectListener tu by-pass le comportement standard et donc tu perd l'intelligence de ton composant. Lien vers le commentaire Partager sur d’autres sites More sharing options...
jok Posté(e) 23 mars 2011 Auteur Share Posté(e) 23 mars 2011 Merci pour ta réponse ! C'était pour vérifier s'il m'affichait bien les ID que je sélectionnais, mais même en enlevant ça ne change rien... J'ai déjà été voir la Doc et je suis effectivement tombé sur le Hello Spinner mais contrairement à un ArrayAdapter, je n'arrive pas à afficher avec mon CursorAdapter (vu que je récupère depuis une table). :/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
moritan Posté(e) 23 mars 2011 Share Posté(e) 23 mars 2011 Le fait que tu changes de type d'adapter ne devrait changer le comportement de ton spinner. As-tu essayé avec un cursor sur une seule colonne? Lien vers le commentaire Partager sur d’autres sites More sharing options...
jok Posté(e) 23 mars 2011 Auteur Share Posté(e) 23 mars 2011 Oui j'ai essayé, mais j'ai le même résultat... Lien vers le commentaire Partager sur d’autres sites More sharing options...
moritan Posté(e) 23 mars 2011 Share Posté(e) 23 mars 2011 tu n'as rien dans le logcat ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
jok Posté(e) 23 mars 2011 Auteur Share Posté(e) 23 mars 2011 Maintenant que tu le dis, j'ai ce warning une fois un nom sélectionné : 03-23 13:46:46.473: WARN/InputManagerService(54): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@44d7c750 Lien vers le commentaire Partager sur d’autres sites More sharing options...
moritan Posté(e) 23 mars 2011 Share Posté(e) 23 mars 2011 C'est rien ce warning c'est juste que ta fenêtre est déjà au premier plan. C'est bizarre car ton code est identique à ce que l'on trouve dans cette page http://developer.android.com/guide/topics/ui/binding.html par exemple. Je ne vois rien qui pourrais clocher. La seule chose que l'on ne voit pas c'est ton implémentation du Cursor vérifie si tu na pas un truc bizarre dedans. Là j'ai plus d'idée. Lien vers le commentaire Partager sur d’autres sites More sharing options...
jok Posté(e) 23 mars 2011 Auteur Share Posté(e) 23 mars 2011 J'y ai pensé aussi, mais mon implémentation du curseur, après une longue vérification, fonctionne très bien (vu qu'elle me renvoie bien ma liste dans le Spinner), c'est juste qu'avant et après sélection dans cette fameuse liste, rien de sélectionné ne s'affiche. :( C'est quand même gentil d'avoir essayé, merci ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 25 mars 2011 Share Posté(e) 25 mars 2011 Vu que tu as défini ton propre layout (R.layout.d_beneficiaire) pour les éléments du spinner lorsqu'il est ouvert, il faut que tu fasses de même pour le cas spinner fermé, et que tu remplaces la référence au layout par défaut dans le contructeur de l'Adapter (android.R.layout.simple_spinner_item) par la référence à ton layout. Celui-ci devra contenir les mêmes TextView (nom, prenom) que ton autre layout Lien vers le commentaire Partager sur d’autres sites More sharing options...
jok Posté(e) 28 mars 2011 Auteur Share Posté(e) 28 mars 2011 PARFAIT ! Ça fonctionne, merci beaucoup ! :') Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.