web-dev-qa-db-fra.com

Création d'un tableau entier d'ID de ressource

J'ai quelques images dans mon dossier res/drawable. Disons img1.png, img2.png Et img3.png. Je suis en train de créer un tableau entier de ces ID d'image dans Java comme ceci

int[] imgIds = {R.drawable.img1, R.drawable.img2, R.drawable.img3};

Au lieu de cela, est-il possible de créer un tableau d'entiers dans l'un des fichiers res/values (Disons strings.xml) Comme celui-ci

<integer-array name="img_id_arr">
    <item>@drawable/img1</item>
    <item>@drawable/img2</item>
    <item>@drawable/img3</item>
</integer-array>

puis y accéder dans Java via getResources().getIntArray(R.array.img_id_arr)?

60
android_stricken

Utilisez simplement "tableau" au lieu de "tableau entier". Voir Typed Array dans le guide du développeur.

65
resnbl

Voir tableau d'entiers XML, références de ressources, getIntArray

TypedArray ar = context.getResources().obtainTypedArray(R.array.my_array);
int len = ar.length();
int[] resIds = new int[len];
for (int i = 0; i < len; i++)
    resIds[i] = ar.getResourceId(i, 0);
ar.recycle();
// Do stuff with resolved reference array, resIds[]...
for (int i = 0; i < len; i++)
    Log.v (TAG, "Res Id " + i + " is " + Integer.toHexString(resIds[i]));
48
Joe Bowbeer

Faire un LevelListDrawable . Bien que ce ne soit pas exactement ce que vous voulez, mais quasiment réalisable.

2
xandy