Хранение идентификаторов 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, который отображает путь к ресурсу с возможностью рисования с использованием ресурса псевдонима .

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