2010-03-23 4 views
0

Je pense que je deviens fou en ce moment. J'essaye de créer un spinner peuplé par un datatable mais pour une raison quelconque le texte d'articles de liste déroulante n'est pas affiché. J'ai regardé partout et j'ai vu d'autres messages avec des gens ayant ce même problème. Quelqu'un peut-il aider ??Android Spinner n'affiche pas les éléments de la liste

speciesList = (Spinner) findViewById(R.id.speciesList); 
    spinnerCursor = nsfdb.fetchAllSpecies(); 
    startManagingCursor(spinnerCursor); 
    //String []cArrayList = new String[]{"dog", "cat", "horse", "other"}; 
    String[] from = new String[]{"species"}; 

    int[] to = new int[]{R.id.text1}; 

    SimpleCursorAdapter locations = new SimpleCursorAdapter(this, R.layout.loc_row, spinnerCursor, from, to); 

    locations.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    speciesList.setAdapter(locations); 

La fileuse est créée très bien et est peuplé de 4 éléments, mais chaque fois que je clique sur le spinner je vois 4 articles sans texte et seulement radiobuttons. Si je sélectionne l'un d'entre eux, je reçois la bonne valeur de l'élément sélectionné, mais il n'y a juste pas de données affichées.

Répondre

0

Quelles sont les colonnes retournées par fetchAllSpecies? Je crois que vous devrez avoir à la fois une colonne "_id" et une colonne "espèce" présente. Si vous n'avez qu'une seule colonne, elle peut l'utiliser pour l'ID, mais elle n'a rien à utiliser pour le texte.

Je ne sais pas avec certitude si c'est le problème que vous rencontrez. Je n'ai pas lié un spinner à une requête DB moi-même.

+0

Les colonnes retournées sont _id et species.Je peux obtenir des valeurs de chacune des colonnes, mais le texte n'est simplement pas affiché dans le fichier simple_spinner_dropdown_item. Si je clique sur la roulette et sélectionne l'une des lignes vides, la liste déroulante disparaît et je reviens à l'affichage de mon application et la valeur sur la roulette affiche la bonne valeur sélectionnée. C'est un comportement très étrange. –

2

J'ai rencontré un problème similaire lorsque j'ai essayé de copier et coller du code pour configurer un ListView dans un Spinner.

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.array.location, android.R.layout.simple_list_item_1); 

nécessaire pour être changé en

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.array.location, android.R.layout.simple_spinner_item); 

Je voudrais essayer de vérifier la configuration de votre mise en page R.layout.loc_row pour vous assurer qu'il est logique pour les données du curseur.

0

User300339

J'ai eu le même problème. L'utilisateur Qberticus m'a donné un bon pointeur.

Fondamentalement, lorsque vous spécifiez la disposition dans SimpleCursorAdapter locations, vous utilisez la disposition personnalisée R.layout.loc_row. L'appel suivant setDropDownViewResource continuera à utiliser les mêmes liaisons d'ID de ressource.

Vous pouvez simplement utiliser simplement ce qui suit:

SimpleCursorAdapter locations = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, spinnerCursor, from, to); 

locations.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

speciesList.setAdapter(locations); 

Cela a fonctionné sur mes codes. BTW, pour le tableau à, vous pouvez l'utiliser à la place.

int[] to = new int[]{ android.R.id.text1}; 

Voir les détails à Android - Text dropdown/selection of Spinner does not show

1

J'ai eu le même problème et employais: int[] to = new int[]{ R.id.text1}; Je pris les conseils ci-dessus et changé pour: int[] to = new int[]{ android.R.id.text1};

Tout fonctionne bien maintenant, Merci !!

0

J'ai eu la même erreur en premier. J'ai utilisé

  ArrayAdapter adapter = ArrayAdapter.createFromResource(getContext(),R.array.nitelik_array,android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_item); 

J'ai supprimé "simple_spinner_item", puis l'ai réécrit. Ça marche. Je ne sais pas pourquoi ..

Questions connexes