Jump to content

Archived

This topic is now archived and is closed to further replies.

jok

[Résolu] Problème de Spinner

Recommended Posts

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 ! :)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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 !

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites





×
×
  • Create New...