Неверный текст подсказки для Android

Первый год из массива данных отображается вместо текста из приглашения в моем счетчике. Я попытался добавить приглашение в XML, но я также пробовал из кода. Кроме того, при добавлении атрибута spinnerSelector он дает ошибку "ресурс, не найденный".

XML

<Spinner
    android:id="@+id/spinnerYear"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:layout_marginLeft="10dip"
    android:layout_marginRight="10dip"
    android:drawSelectorOnTop="true"
    android:padding="5dip"
    android:prompt="@string/spinner_header"
    android:background="@drawable/selector_yearspinnerback"
    android:layout_below="@+id/linearLayout_gender_btns"
    android:layout_centerHorizontal="true"></Spinner>
  -- android:spinnerSelector="@drawable/category_arrow"

Код

ArrayList<String> yearList = new ArrayList<String>();
int now = new Date().getYear() + 1900;
for (int i = now; i > now - 110; i--) {
    yearList.add(i + "");
}
Spinner spinner = (Spinner) findViewById(R.id.spinnerYear);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, yearList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

Ответ 1

Для меня, как android: prompt XML attibute, так и Spinner.setPrompt, и селектор списков отображает правильное название.

Попробуйте найти ошибку в вашем коде или вызовите Spinner.getPrompt в какой-то момент и распечатайте это для входа в журнал, чтобы найти наш адрес, откуда вы получаете недопустимый заголовок.

Ответ 2

Возможно, вы видите, как прядильщик выпадал в качестве списка без подсказки. Существует два режима, в которых счетчик показывает элементы, выпадающий и диалог.

Добавьте этот атрибут в свой счетчик как атрибут XML atrtribute:

android:spinnerMode="dialog"

И теперь вы получите элементы в списке выбора всплывающего окна, а не в раскрывающемся списке.

Ответ 3

Вы должны установить adapter.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item); после

spinner.setAdapter(adapter);

Таким образом, фиксированный код будет:

ArrayList<String> yearList = new ArrayList<String>();
int now = new Date().getYear() + 1900;
for (int i = now; i > now - 110; i--) {
    yearList.add(i + "");
}
Spinner spinner = (Spinner) findViewById(R.id.spinnerYear);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, yearList);
spinner.setAdapter(adapter);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

(Я надеюсь, что это сработает для вас, как будто это работает для меня: D!)