如何让用户从微调器中选择特定年份

How to let user choose a specific year from a spinner

您好,我希望用户能够单击微调器并从我提供的年份中选择年份。我会提供从 1970 年到当年的范围,但我不知道如何实现它。

如果我创建一个微调器并给它一个像这样的数组

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

然后我需要手动添加40多个项目,我需要每年手动更新应用程序。此外,微调器 onClick 回调 returns 不是字符串值,而是字符串在数组中的索引,因此例如 1972 将是索引 3.

此外,我将提供另一个微调器,用户可以在其中选择大于或等于第一个微调器中选择的年份的年份。

最后我想结束一个 api 间隔几年的请求。

我该怎么做?

您可以通过编程方式将项目添加到微调器。

你可以用一个简单的命令找出我们现在是哪一年,并且可以强制程序添加数字,例如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);

我认为你必须创建年份选择器而不是创建微调器的数字列表

试试这个

 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);

希望这会有所帮助..