Мне нужно, чтобы значения внутри всплывающего окна были созданы динамически.
В частности, я показываю список лет для выбора пользователем. Год - текущий год + 12 лет в будущем.
Если я использовал strings.xml для создания строкового массива, тогда я вручную набрал элементы списка в этом массиве. Через несколько лет он все равно будет показывать старые неулокальные годы. Я должен был бы нажать обновление или что-то еще. Lame.
Я знаю, как получить текущий год в форме Integer, используя
int thisYear = Calendar.getInstance().get(Calendar.YEAR);
но мне нужно заполнить массив этим годом + будущие годы. Это легко сделать, но ни один из типов адаптеров для Spinner не хочет принимать int-массивы или массивы строк в этом отношении.
Мне нужен счетчик, который отображает элементы, которые были динамически сгенерированы. Файл strings.xml содержит предварительно введенные элементы списка, поэтому я не могу его использовать.
Справка
Вы пытались добавить их в виде строк inted по умолчанию за один раз?
Я не пробовал компилировать это, но что-то вроде этого должно работать:
int thisYear = Calendar.getInstance().get(Calendar.YEAR);
for (int i = 0; i < 12; i++) {
adapter.add(Integer.toString(thisYear + i));
}
И затем, если вы хотите, чтобы они возвращались как int на выходе, используйте Integer.parseInt()
Вы можете расширить класс SpinnerAdapter (или BaseAdapter или ArrayAdapter) и сделать все, что вам нужно.
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);