【问题标题】:Android Generate Spinner List without XML or R.arrayAndroid 在没有 XML 或 R.array 的情况下生成 Spinner List
【发布时间】:2011-04-04 17:01:10
【问题描述】:

我需要动态生成微调器弹出窗口中的值。

具体来说,我正在显示供用户选择的年份列表。年份是当前年份 + 未来 12 年。

如果我使用 strings.xml 来创建一个字符串数组,那么我已经手动输入了该数组中的列表项。几年后,它仍然会显示更老的无关年份。我将不得不推送更新或其他东西。跛脚。

我知道如何使用整数形式获取当前年份

int thisYear = Calendar.getInstance().get(Calendar.YEAR);

但我需要用今年 + 未来几年填充一个数组。这很容易做到,但 Spinner 的适配器类型都不想采用 int 数组或字符串数​​组。

我需要一个微调器来显示动态生成的项目。 strings.xml 包含预先输入的列表项,所以我不能使用它。

帮助?

【问题讨论】:

    标签: android dynamic spinner listitem arrays


    【解决方案1】:

    您是否尝试过将它们作为整数的字符串化版本一次添加一个?

    我没有尝试编译这个,但是这样的东西应该可以工作:

    int thisYear = Calendar.getInstance().get(Calendar.YEAR);
    for (int i = 0; i < 12; i++) {
      adapter.add(Integer.toString(thisYear + i));
    }
    

    然后,如果您需要将它们作为 int 的方式返回,请使用 Integer.parseInt()

    【讨论】:

    • 啊,是的,我明白了,但我不知道如何声明和初始化适配器!我初始化它们的方式从 R.array.expYr 中的 strings.xml 文件中获取一个片段。 'ArrayAdapter 适配器 = ArrayAdapter.createFromResource(this, R.array.expYr, android.R.layout.simple_spinner_item);'
    • 我明白了。在生成字符串之后,我必须执行 new ArrayAdapter 并将字符串引用添加到其中,而不是 createFromResource。 String years[] = new String[12]; int thisYear = Calendar.getInstance().get(Calendar.YEAR); for (int i = 0; i &lt; 12; i++) { years[i] = Integer.toString(thisYear); thisYear = thisYear+1; } ArrayAdapter&lt;CharSequence&gt; expYearAdapter = new ArrayAdapter&lt;CharSequence&gt;(this, android.R.layout.simple_spinner_item, years);
    【解决方案2】:

    您可以扩展 SpinnerAdapter(或 BaseAdapter 或 ArrayAdapter)类并对它们进行任何您需要的操作。

    【讨论】:

    • 你能详细说明我在这个问题的上下文中会做什么吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 2016-03-30
    相关资源
    最近更新 更多