我有Spinner
从array.xml文件中的string-array
获取它的值。看起来像这样:
<string-array name="arr_typl">
<item>0</item>
<item>1</item>
<item>4</item>
<item>5</item>
<item>12</item>
<item>13</item>
</string-array>
[当我想从中获得价值时,我可以使用getSelectedItem()
获得它。但是,当我想将Spinner
设置为数字13时,会出现如下错误:
java.lang.ArrayIndexOutOfBoundsException: length=6; index=13
[我该怎么做才能使Spinner
获得价值而不是排名?这是我的代码:
spinner3_6 = Objects.requireNonNull(getView()).findViewById(R.id.sp3_6);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(Objects.requireNonNull(getActivity()), R.array.arr_typl_3, R.layout.value_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner3_6.setAdapter(adapter);
提前感谢
您可以在数组中找到数据的位置,并将其传递给Spinner:
final String[] values = getResources().getStringArray(R.array.arr_typl);
final int position = Arrays.asList(values).indexOf("13");
如果您正在Spinner中寻找像spinner.setSelectedItem(item)这样的方法,则没有任何方法。
您必须找到项目的位置。您有项目,并且有微调框。
// The array that you are filling the spinner with
String[] array = getResources().getStringArray(R.array.testArray);
// We have to find the position, initial position is -1, that means that we haven't found the position yet
int position = -1;
for (int i = 0; i < array.length; i++) {
if (array[i].contains(item)) {
position = i;
}
}
此后,您可以拨打spinner.setSelection(position)
您应该获得像这样的String数组
String[] stringArray = getResources().getStringArray(R.array.shoes);
final int position = ArrayUtils.indexOf(stringArray ,"13");
然后将微调器设置为
ArrayAdapter<CharSequence> adapter =
ArrayAdapter.createFromResource(Objects.requireNonNull(getActivity()), stringArray ,
R.layout.value_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setSelection(position);