wergio
@wergio
Программист - любитель!

Как получить числовой массив в ListViewCustomAdapter?

Получаю строковый массив иконок. В массиве идентификаторы картинок, такого вида:
String icons[] = {2131165283, 2131165283};

Но это массив "String" , а адаптер требует массив int:
int icons[] = {2131165283, 2131165283};

Подскажите пожалуйста, каким образом собрать массив int.

JSONArray arr4 = new JSONArray(receivedData);
            List<String> list4 = new ArrayList<String>();
            for(int i = 0; i < arr4.length(); i++){
                String icons = arr4.getJSONObject(i).getString("icons");
                list4.add(icons);
            }

           String[] icons = list4.toArray(new String[0]);

            adapter = new ListViewCustomAdapter(this, names, ip, players, id, icons);
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 1
@stoptalking
Во-первых String[] icons = {123,123} - это ошибка компиляции. Вы объявляете массив стрингов, и пытаетесь заполнить его интами.

Во-вторых вот в этом коде

for(int i = 0; i < arr4.length(); i++) {
    String icons = arr4.getJSONObject(i).getString("icons");
    list4.add(icons);
}


поменяйте getString на getInt (или как там у вас называется метод, который превращает JsonPrimitive в инт). Ну и меняйте везде String на инт. Зачем вы создаете список, заполняете его, а потом героически преобразуете в массив?

int[] arr = new int[arr4.length];
for (...) {
    arr[i] = arr4[i]....
}

adapter = new BlaBlaAdapter(... arr);


В третьих вам уже сказали - вы пишете чушь, инты в R классах меняются. Если у вас динамические иконки - лейте их по сети. В крайнем случае храните стринговые имена, но уж никак не ресурсные инты. Но даже имена - это тоже бред, просто пукан у вас будет полыхать не после каждого ребилда, а после изменения сетов иконок.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы