【问题标题】:How to let user choose a specific year from a spinner如何让用户从微调器中选择特定年份
【发布时间】:2016-10-20 12:43:25
【问题描述】:

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

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

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

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

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

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

我该怎么做?

【问题讨论】:

  • 您可以将ArrayList 用于值,例如this 答案。
  • 获取当前年份。使用循环从 1970 年到当前年填充 ArrayList。
  • 谢谢,我不知道我能做到。

标签: android android-spinner android-datepicker


【解决方案1】:

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

试试这个

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

希望这会有所帮助..

【讨论】:

  • 如果我想按降序显示日期怎么办?
【解决方案2】:

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

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

【讨论】:

  • 嗨,我没有使用 DatePicker,因为我只需要年份,而不是日期或月份。谢谢。
  • 您的答案有效,但我会将之前发布的人标记为答案
  • 好吧,我提前一分钟发布了。我刚刚问了你一个问题,而他刚刚发布了他的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多