【问题标题】:Populate Spinner from string array source, with a String ArrayAdapter使用 String ArrayAdapter 从字符串数组源填充 Spinner
【发布时间】:2012-08-20 00:52:50
【问题描述】:

我通过在我的 Java 代码中填充微调器来创建我的应用程序。我现在正在尝试将其转换为从我的 strings.xml 文件填充我的 Spinners。我关注了一些网站(example 1example 2),但无法让我的代码正常工作。

这些的主要问题是他们使用的 ArrayAdapter 的类型是 <CharSequence>。我可以使用<String> ArrayAdapters 以某种方式做到这一点吗?

这是我的 XML 文件中的数组:

<string-array name="anti_pump_ap_mode_array">
    <item>OFF</item>
    <item>Anti-Pump</item>
    <item>Motor Cut...</item>
</string-array>

这是我尝试过的代码:

apModeAdapter = new ArrayAdapter<String>(this, R.array.anti_pump_ap_mode_array, android.R.layout.simple_spinner_item );

apModeAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, R.array.anti_pump_ap_mode_array );

apModeAdapter = ArrayAdapter.createFromResource(this, android.R.layout.simple_spinner_item, R.array.anti_pump_ap_mode_array );

当然最后一个给了我一个错误,但前两个只是没有填充我的微调器。当我运行应用程序时,微调器只是空的。

【问题讨论】:

  • logcat 的错误是什么?
  • 一分钟让我再运行一次对不起。
  • @Akshay 哦,等等,没有 LogCat 错误。创建 ArrayAdapter 的前两种方法会创建一个空微调器,而第三种方法只会给我一个错误并且不会让我运行程序。
  • 哈哈那为什么不行???我也有同样的想法,但显然存在某种差异使其无法正常工作。

标签: android xml spinner


【解决方案1】:

使用下面的方式,交换数组 id 和布局 id。 textarray资源id是第二个参数

apModeAdapter = ArrayAdapter.createFromResource(this, R.array.anti_pump_ap_mode_array, android.R.layout.simple_spinner_item,  );

编辑: 对于第一种工作方式。从资源中获取字符串数组

Resources res = getResources();
apModeAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, res.getStringArray(R.array.anti_pump_ap_mode_array) );

【讨论】:

    【解决方案2】:

    CharSequenceString 实现的接口,因此即使API createFromResource() 返回接口类型,它仍然填充您的String 数组。如果您以后确实需要以字符串的形式访问结果,则可以强制转换访问器。但是,大多数 Android UI 方法也将CharSequence 作为输入。

    另外,参数是颠倒的。它应该是这样的:

    ArrayAdapter.createFromResource(this, R.array.anti_pump_ap_mode_array, android.R.layout.simple_spinner_item );
    

    【讨论】:

    • 我希望这不是答案。我想找到一种使用&lt;String&gt; 适配器的方法,因为我已经设置了很多 Spinners。我需要投很多东西。你确定这是唯一的方法吗?
    猜你喜欢
    • 1970-01-01
    • 2017-02-02
    • 2020-12-12
    • 1970-01-01
    • 2013-06-06
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多