所以我有一个int数组和一个微调器,我需要微调器来显示int数组的值。作为一个新手,我不知道如何将int数组添加到arrayadapter或simpleadapter。我也可以使用列表而不是数组,但它总是包含整数值。
mspin=(Spinner) findViewById(R.id.spinner1);
int[] items=new int[]{1,2,3,4};
ArrayAdapter<int[]> ad=new ArrayAdapter(this,android.R.layout.simple_spinner_item);
//ad.add(items); // this cause some value to be displayed, possible the id of the item.
mspin.setAdapter(ad);
谢谢
答案 0 :(得分:12)
你必须使用Integer,而不是int。此语法有效:
Integer[] items = new Integer[]{1,2,3,4};
ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(this,android.R.layout.simple_spinner_item, items);
答案 1 :(得分:1)
这不恰当吗?由于默认ArrayAdapter
实施仅在每个项目上调用.toString()
。也许您需要使用Integer
代替(这是一个对象)。或者,您可以实现自己的自定义适配器扩展ArrayAdapter
或移动到字符串数组开始。
答案 2 :(得分:0)
如果要从资源数组获取值,则应在整数项周围添加双引号,如下所示:
<array name="values">
<item>"1"</item>
<item>"2"</item>
<item>"3"</item>
<item>"4"</item>
<item>"5"</item>
</array>
然后只需从资源中将值作为String数组获取并将其设置为适配器即可。
String[] values = getResources().getStringArray(R.array.values);
ArrayAdapter<String> ad = new ArrayAdapter(this, android.R.layout.simple_spinner_item, values);
mspin.setAdapter(ad);