так, как добавить массив INT к счетчику в Android - PullRequest
2 голосов
/ 20 сентября 2011

поэтому у меня есть массив int и счетчик, мне нужно, чтобы счетчик показал значения массива int.Будучи новичком, я не уверен, как добавить массив int к адаптеру массива или простому адаптеру.Вместо этого я могу использовать список в массиве, но он всегда будет содержать целочисленные значения.

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

Спасибо

Ответы [ 3 ]

12 голосов
/ 21 сентября 2011

Вы должны использовать 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 голос
/ 20 сентября 2011

Разве это не работает? Поскольку реализация по умолчанию ArrayAdapter просто вызывает .toString() для каждого элемента. Возможно, вам нужно использовать Integer вместо (который является объектом). В качестве альтернативы вы могли бы реализовать свой собственный адаптер, расширяющий ArrayAdapter или переходящий к массиву строк для начала.

0 голосов
/ 05 августа 2018

Если вы получаете значения из массивов ресурсов, вам следует добавить двойные кавычки вокруг целочисленных элементов, например:

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