2012-06-06 3 views
2

Je suis en train de mettre une fileuse avec setSelection afin d'afficher une option spécifique comme suit:Set sélection Spinner ne fonctionne pas

Spinner gender; 
gender = (Spinner) findViewById(R.id.spinner_edit_gender); 
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.gender_array, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    gender.setAdapter(adapter); 
    if (strGender.equals("male")) 
     gender.setSelection(0,true); 
    else 
     gender.setSelection(1,true); 

Il définit toujours la première option de la fileuse au lieu de ce que je veux

Quelqu'un sait pourquoi et peut m'aider plz?

Thanx

+1

Où définissez-vous 'strGender'? – Sam

+0

ci-dessus le "Spinner sexe"; J'ai String StrGender et sa valeur est "femelle", bien sûr .... je l'ai imprimé par Log – kande

+0

Juste pour être sûr, 'R.array.gender_array' a deux valeurs, correct? En outre, pouvez-vous publier le contenu de celui-ci ainsi que votre code XML pour 'R.id.spinner_edit_gender'? – shanet

Répondre

1

Essayez d'utiliser setSelection(int) au lieu de setSelection(int, boolean).

+1

J'ai toujours utilisé 'setSelection (int)' dans mes applications, donc j'ai juste essayé de passer à 'setSelection (int, boolean)' dans une instance sans différence notable. Si cela finit par être la solution à la question du PO, j'aimerais savoir pourquoi. – shanet

+0

Il n'a pas fonctionné ..... :( – kande

1

Deux choses à essayer:

1.) Je vais prendre un coup de feu dans l'obscurité ici et suggérer que vous essayez de définir les options à votre spinner dans ce XML de. C'est ce que je suis dans l'une de mes applications où j'utilise setSelection() avec succès.

<Spinner android:id="@+id/spinner_edit_gender" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"     
    android:prompt="@string/genders" 
    android:entries="@array/gender_array"/> 

puis votre code devient:

Spinner gender = (Spinner) findViewById(R.id.spinner_edit_gender); 
if (strGender.equalsIgnoreCase("male")) 
    gender.setSelection(0,true); 
else 
    gender.setSelection(1,true); 

ou si l'on veut obtenir un peu plus recherchés:

Spinner gender = (Spinner) findViewById(R.id.spinner_edit_gender); 
(strGender.equalsIgnoreCase("male")) ? gender.setSelection(0,true) : gender.setSelection(1,true); 

j'ai changé equals()-equalsIgnoreCase() parce que vous les valeurs dans votre tableau don ne correspond pas au cas des valeurs dans votre code dans votre exemple ("male" vs "Male"). 2. Lorsque je tapais la première partie, j'ai remarqué que le type de votre ArrayAdapter est CharSequence. Essayez de changer cela à String puis testez votre code original. Toutefois, en fonction de vos besoins, vous pouvez envisager de définir les options en XML car, à mon avis, c'est une manière plus simple et plus simple de définir les options d'un compteur que de traiter ArrayAdapters.

+0

Merci pour votre réponse détaillée, la première solution n'a pas fonctionné, et en ce qui concerne la deuxième solution - j'essaie de changer en chaîne, mais j'ai eu des erreurs pour revenir à CharSequence .... – kande

+0

Merci tout le monde !!! Je résous le problème !!!!! J'ai déplacé le code de son lieu d'origine à un autre et il commence à travailler ...... – kande

+0

Heureux d'entendre ça fonctionne. cela pourrait vous venir à l'esprit, est-ce que cela vous dérangerait de documenter où votre code était à l'origine, et où vous l'avez fait fonctionner? – shanet