Mam Spinner, które pobierają swoje wartości z string-array w pliku array.xml. Wygląda to tak:

<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>

Jeśli chcę uzyskać z tego jakąś wartość, mogę to uzyskać za pomocą getSelectedItem(). Ale kiedy chcę ustawić Spinner z np. Numerem 13, pojawia się taki błąd:

java.lang.ArrayIndexOutOfBoundsException: length=6; index=13

Jak mogę to zrobić, aby Spinner otrzymało wartość zamiast pozycji? Oto mój kod:

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

Z góry dziękuję

-1
Luke 20 listopad 2019, 16:40

3 odpowiedzi

Możesz znaleźć pozycję swoich danych w tablicy i przekazać ją do Spinner:

final String[] values = getResources().getStringArray(R.array.arr_typl);
final int position = Arrays.asList(values).indexOf("13");
0
Bracadabra 20 listopad 2019, 16:57

Jeśli szukasz metody w Spinner, takiej jak spinner.setSelectedItem (item), nie ma żadnej.

Musisz znaleźć pozycję przedmiotu. Masz przedmiot i masz tablicę przędzarki.

// 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;
    }
}

Następnie możesz zadzwonić pod numer spinner.setSelection(position)

0
Elvedin Selimoski 20 listopad 2019, 17:00

Powinieneś otrzymać taką tablicę String

String[] stringArray =  getResources().getStringArray(R.array.shoes);
final int position = ArrayUtils.indexOf(stringArray ,"13");

Następnie ustaw pokrętło jako

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);
0
Manoj Perumarath 20 listopad 2019, 17:02