2012-06-06 5 views
2

Я пытаюсь установить счетчик с setSelection, чтобы отобразить конкретный вариант следующим образом:Набор Spinner не работает

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); 

Он всегда задает первый вариант центрифуги вместо того, что я хочу

Кто-нибудь знает, почему и может мне помочь?

Thanx

+1

Где вы определяете 'strGender'? – Sam

+0

над полем «Spinner gender»; У меня есть String strGender, и его значение является «женским», наверняка .... я печатаю его по Log – kande

+0

. Чтобы убедиться, что у 'R.array.gender_array' есть два значения, правильно? Кроме того, можете ли вы разместить его содержимое, а также свой XML для 'R.id.spinner_edit_gender'? – shanet

ответ

1

Попробуйте использовать setSelection(int) вместо setSelection(int, boolean).

+1

Я всегда использовал 'setSelection (int)' в своих приложениях, поэтому я просто попытался перейти на 'setSelection (int, boolean)' в одном экземпляре без заметной разницы. Если это в конечном итоге будет решением вопроса OP, я бы с удовольствием узнал, почему. – shanet

+0

Это не сработало ..... :( – kande

1

Две вещи, чтобы попробовать:

1.) Я собираюсь взять выстрел в темноте здесь и предположить, что вы пытаетесь определением опции для вашего блесны в этом XML. Это то, что я в одном из моих приложений, где я успешно использую setSelection().

<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"/> 

, а затем ваш код становится:

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

или, если мы хотим получить немного фантазера:

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

Я изменил equals() к equalsIgnoreCase(), потому что вы значение в массиве дон 't соответствует случаю значений в вашем коде в вашем примере («мужчина» и «мужчина»).

2.) Когда я печатал первую часть, я заметил, что тип вашего ArrayAdapter равен CharSequence. Попробуйте изменить это на String, а затем проверьте исходный код. Однако, в зависимости от ваших потребностей, вы можете рассмотреть возможность определения параметров в XML, поскольку, по крайней мере, на мой взгляд, это более простой и простой способ определения опций для счетчика, чем для работы с ArrayAdapters.

+0

Благодарим за подробный ответ, первое решение не сработало и касается второго решения - я пытаюсь изменить на String, но у меня появились ошибки, чтобы вернуться к CharSequence .... – kande

+0

Спасибо всем !!! Я решаю проблему !!!!! Я переместил код из его оригинального места в другое, и он начал работать ...... – kande

+0

Рад слышать, что он работает. это может произойти в будущем, не могли бы вы задокументировать, где был ваш код изначально, и куда вы его перенесли, что заставило его работать? – shanet