我通过在Java代码中填充微调器来创建我的应用程序。我现在正尝试将其转换为从strings.xml文件填充我的Spinners。我关注了一些网站(example 1和example 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 );
当然最后一个给了我一个错误,但前两个只是不填充我的微调器。当我运行应用程序时,Spinner只是空的。
答案 0 :(得分:18)
使用以下方式,交换数组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) );
答案 1 :(得分: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 );