Storing R.drawable IDs in XML array Storing R.drawable IDs in XML array android android

Storing R.drawable IDs in XML array


You use a typed array in arrays.xml file within your /res/values folder that looks like this:

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

Then in your activity, access them like so:

TypedArray imgs = getResources().obtainTypedArray(R.array.random_imgs);// get resource ID by index, use 0 as default to set null resourceimgs.getResourceId(i, 0)// or set you ImageView's resource to the idmImgView1.setImageResource(imgs.getResourceId(i, 0));// recycle the arrayimgs.recycle();


In the value folder create xml file name it arrays.xmladd the data to it in this way

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

Then obtain it to your code this way

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

Then to use a Drawable of these in the img TypedArray for example as an ImageView background use the following code

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

where index is the Drawable index.defaultValue is a value you give if there is no item at this index

For more information about TypedArray visit this linkhttp://developer.android.com/reference/android/content/res/TypedArray.html


You can use this to create an array of other resources, such as drawables. Note that the array is not required to be homogeneous, so you can create an array of mixed resource types, but you must be aware of what and where the data types are in the array.

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

And obtain the resources in your activity like this

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

Enjoy!!!!!