Android генерирует список спиннеров без XML или R.array

1

Мне нужно, чтобы значения внутри всплывающего окна были созданы динамически.

В частности, я показываю список лет для выбора пользователем. Год - текущий год + 12 лет в будущем.

Если я использовал strings.xml для создания строкового массива, тогда я вручную набрал элементы списка в этом массиве. Через несколько лет он все равно будет показывать старые неулокальные годы. Я должен был бы нажать обновление или что-то еще. Lame.

Я знаю, как получить текущий год в форме Integer, используя

int thisYear = Calendar.getInstance().get(Calendar.YEAR);

но мне нужно заполнить массив этим годом + будущие годы. Это легко сделать, но ни один из типов адаптеров для Spinner не хочет принимать int-массивы или массивы строк в этом отношении.

Мне нужен счетчик, который отображает элементы, которые были динамически сгенерированы. Файл strings.xml содержит предварительно введенные элементы списка, поэтому я не могу его использовать.

Справка

Теги:
arrays
dynamic
spinner
listitem

2 ответа

1
Лучший ответ

Вы пытались добавить их в виде строк inted по умолчанию за один раз?

Я не пробовал компилировать это, но что-то вроде этого должно работать:

int thisYear = Calendar.getInstance().get(Calendar.YEAR);
for (int i = 0; i < 12; i++) {
  adapter.add(Integer.toString(thisYear + i));
}

И затем, если вы хотите, чтобы они возвращались как int на выходе, используйте Integer.parseInt()

  • 0
    Ах да, я понимаю, но я не знаю, как объявить и инициализировать адаптер! То, как я их инициализировал, берет сегмент из файла strings.xml, который находится в R.array.expYr. 'ArrayAdapter <CharSequence> adapter = ArrayAdapter.createFromResource (this, R.array.expYr, android.R.layout.simple_spinner_item);'
  • 0
    Я понял. вместо createFromResource мне пришлось создать новый ArrayAdapter <CharSequence> и добавить в него ссылку на строку после того, как я сгенерировал строку. String years[] = new String[12]; int thisYear = Calendar.getInstance().get(Calendar.YEAR); for (int i = 0; i < 12; i++) { years[i] = Integer.toString(thisYear); thisYear = thisYear+1; } ArrayAdapter<CharSequence> expYearAdapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, years);
0

Вы можете расширить класс SpinnerAdapter (или BaseAdapter или ArrayAdapter) и сделать все, что вам нужно.

  • 0
    Можете ли вы уточнить, что я буду делать в контексте этого вопроса?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню