Это объясняет, как это сделать, когда вы знаете имена элементов во время компиляции, но что, если я хочу, чтобы они были определены во время выполнения ... т.е. сегодня, завтра, (день и дата после завтра) и т.д ...
Переменная items должна быть объявлена как final.
Нет, это не так.
Не означает ли окончательно, что я не могу изменить значение?
Для этого конкретного примера он объявлен final, потому что он показан как просто локальная переменная, и значение также необходимо внутри анонимного DialogInterface.OnClickListener внутреннего класса.
final
DialogInterface.OnClickListener
Однако:
То, что что-то объявлено final, не означает, что оно должно быть буквальным. Например, ключевое слово final иногда используется в параметрах для методов, и они явно не создаются статически. Цитируя Wikipedia : «Конечную переменную можно инициализировать только один раз, либо с помощью инициализатора, либо с помощью оператора присваивания».
Есть и другие места, где вы можете поместить свой массив, кроме локальной переменной, для которых не требуется ключевое слово final, если вы не хотите использовать final. Один вероятный кандидат будет членом данных вашей деятельности.