Как разрешить пользователю выбирать конкретный год из счетчика

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

Если я создам счетчик и дам ему такой массив

<string-array name="spinnerItems">
    <item>1970</item>
    <item>1971</item>
</string-array>

Тогда мне нужно было бы добавить более 40 элементов вручную, и мне нужно было бы вручную обновлять приложение каждый год. Также обратный вызов счетчика onClick возвращает не строковое значение, а индекс строки в массиве, поэтому, например, 1972 будет индексом 3.

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

В конце концов, я хочу завершить запрос API с интервалом в несколько лет.

Как я могу это сделать?


person user11230    schedule 20.10.2016    source источник
comment
Вы можете использовать ArrayList для значений, как в этом ответе.   -  person Andrii Omelchenko    schedule 20.10.2016
comment
Получить текущий год. Используйте цикл для заполнения ArrayList с 1970 по текущий год.   -  person sachinsharma    schedule 20.10.2016
comment
Спасибо, я не знал, что так можно.   -  person user11230    schedule 20.10.2016


Ответы (2)


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

Попробуй это

 ArrayList<String> years = new ArrayList<String>();
int thisYear = Calendar.getInstance().get(Calendar.YEAR);
for (int i = 1900; i <= thisYear; i++) {
    years.add(Integer.toString(i));
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, years);

Spinner spinYear = (Spinner)findViewById(R.id.yearspin);
spinYear.setAdapter(adapter);

Надеюсь, это поможет..

person Ragnar    schedule 20.10.2016
comment
Что если я хочу показать даты в порядке убывания? - person user11230; 20.10.2016

Вы можете добавлять элементы в счетчик программно.

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

ВНИМАНИЕ: Псевдокод

Spinner mySpinner = (Spinner) findViewById(R.id.spinner);
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
ArrayAdapter<String> adapter;
List<String> list;

list = new ArrayList<String>();
for(int i = 1800; i <= year; i++)
{
  list.add(i);
}
adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mySpinner.setAdapter(adapter);
person Felix    schedule 20.10.2016
comment
Привет, я не использую DatePicker, потому что мне нужен только год, а не день или месяц. Спасибо. - person user11230; 20.10.2016
comment
Ваш ответ работает, но я отмечу как ответ парня, который разместил его ранее - person user11230; 20.10.2016
comment
Ну, я написал минуту назад. Я только что задал вам вопрос первым, а он только что опубликовал свой ответ. - person Felix; 20.10.2016