jok Posted March 23, 2011 Share Posted March 23, 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 ! :) Link to comment Share on other sites More sharing options...
moritan Posted March 23, 2011 Share Posted March 23, 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. Link to comment Share on other sites More sharing options...
jok Posted March 23, 2011 Author Share Posted March 23, 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). :/ Link to comment Share on other sites More sharing options...
moritan Posted March 23, 2011 Share Posted March 23, 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? Link to comment Share on other sites More sharing options...
jok Posted March 23, 2011 Author Share Posted March 23, 2011 Oui j'ai essayé, mais j'ai le même résultat... Link to comment Share on other sites More sharing options...
moritan Posted March 23, 2011 Share Posted March 23, 2011 tu n'as rien dans le logcat ? Link to comment Share on other sites More sharing options...
jok Posted March 23, 2011 Author Share Posted March 23, 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 Link to comment Share on other sites More sharing options...
moritan Posted March 23, 2011 Share Posted March 23, 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. Link to comment Share on other sites More sharing options...
jok Posted March 23, 2011 Author Share Posted March 23, 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 ! Link to comment Share on other sites More sharing options...
chpil Posted March 25, 2011 Share Posted March 25, 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 Link to comment Share on other sites More sharing options...
jok Posted March 28, 2011 Author Share Posted March 28, 2011 PARFAIT ! Ça fonctionne, merci beaucoup ! :') Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.