从字符串数组源填充微调,与字符串ArrayAdapter(Populate Spinner from

2019-09-21 14:30发布

我已经通过我的Java代码中填入纺纱创建我的应用程序。 现在我想将其转换为从我的strings.xml文件填充我的纱厂。 我跟了几个网站( 例如1和例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 );

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

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


Answer 2:

CharSequence是,一个接口String实现,所以尽管API createFromResource()返回的接口类型,它仍然是充满了你String数组。 如果你真的需要在以后进行访问的结果作为一个字符串,你可以投的访问。 然而,大多数的Android UI方法采取CharSequence作为输入也。

此外,该参数是相反的。 它应该是这样的:

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


文章来源: Populate Spinner from string array source, with a String ArrayAdapter