Intereting Posts
Ошибка с setPixels Ошибка android getSharedPreferences: значение карты без атрибута name: boolean Кэш Android-объектов Android ==> Анализ памяти ==> Анализатор памяти Eclipse? Ant jar error: Execute failed: java.io.IOException: не удается запустить программу … $ {aapt} ": ошибка = 2, нет такого файла или каталога Как форматировать ввод EditText при вводе с тысячами разделителей (,) в Android? Почему Intent.createChooser () нуждается в BroadcastReceiver и как реализовать? Как использовать getListView () в действии? Общий охват Sonarqube не соответствует охвату отчета jacoco Показать GIF-файл с помощью Glide (библиотека загрузки изображений и кеширования) Как создать экран заставки / Запуск экрана, который исчезает после загрузки приложения? (Реагировать родной) Как получить непрерывное событие mousemove при использовании мобильного браузера Android? Вставьте отметку времени в базу данных через ContentValues Как интегрировать prestashop с Android? Когда отменять регистрацию приемника вещания, зарегистрированного в onCreate?

Хранение идентификаторов R.drawable в массиве XML

Я хотел бы сохранить идентификатор ресурса ресурса в форме R.drawable.* Внутри массива, используя файл значений XML, а затем получить массив в моей активности.

Любые идеи о том, как достичь этого?

Solutions Collecting From Web of "Хранение идентификаторов R.drawable в массиве XML"

Вы используете типизированный массив в файле arrays.xml в папке /res которая выглядит так:

 <?xml version="1.0" encoding="utf-8"?> <resources> <integer-array name="random_imgs"> <item>@drawable/car_01</item> <item>@drawable/balloon_random_02</item> <item>@drawable/dog_03</item> </integer-array> </resources> 

Затем в своей деятельности обращайтесь к ним так:

 TypedArray imgs = getResources().obtainTypedArray(R.array.random_imgs); // get resource ID by index imgs.getResourceId(i, -1) // or set you ImageView's resource to the id mImgView1.setImageResource(imgs.getResourceId(i, -1)); // recycle the array imgs.recycle(); 

В папке value создайте имя файла xml это arrays.xml добавит к ней данные таким образом

 <integer-array name="your_array_name"> <item>@drawable/1</item> <item>@drawable/2</item> <item>@drawable/3</item> <item>@drawable/4</item> </integer-array> 

Тогда получите его в свой код таким образом

 private TypedArray img; img = getResources().obtainTypedArray(R.array.your_array_name); 

Затем, чтобы использовать Drawable из них в img TypedArray например, в качестве background ImageView используйте следующий код

 ImageView.setBackgroundResource(img.getResourceId(index, defaultValue)); 

Где index – индекс Drawable . defaultValue – это значение, которое вы даете, если в этом index нет элемента

Для получения дополнительной информации о TypedArray посетите эту ссылку http://developer.android.com/reference/android/content/res/TypedArray.html

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

  <?xml version="1.0" encoding="utf-8"?> <resources> <array name="icons"> <item>@drawable/home</item> <item>@drawable/settings</item> <item>@drawable/logout</item> </array> <array name="colors"> <item>#FFFF0000</item> <item>#FF00FF00</item> <item>#FF0000FF</item> </array> </resources> из  <?xml version="1.0" encoding="utf-8"?> <resources> <array name="icons"> <item>@drawable/home</item> <item>@drawable/settings</item> <item>@drawable/logout</item> </array> <array name="colors"> <item>#FFFF0000</item> <item>#FF00FF00</item> <item>#FF0000FF</item> </array> </resources> 

И получить ресурсы в своей деятельности, как это

 Resources res = getResources(); TypedArray icons = res.obtainTypedArray(R.array.icons); Drawable drawable = icons.getDrawable(0); TypedArray colors = res.obtainTypedArray(R.array.colors); int color = colors.getColor(0,0); 

Наслаждаться!!!!!

Насколько я знаю, вы не можете хранить массивы в R.drawable.

Что вы можете сделать, так это создать массив в файле config.xml или strings.xml, который отображает путь к ресурсу с возможностью рисования с использованием ресурса псевдонима .

Посмотрите, работает ли это, и, пожалуйста, дайте мне знать, если вам нужна дополнительная помощь.