Ответ 1
Вы можете использовать getIdentifier()
for (int j = 1; j < 6; j++) {
Drawable drawable = getResources().getDrawable(getResources()
.getIdentifier("d002_p00"+j, "drawable", getPackageName()));
}
У меня есть такой массив.
int image[] = {R.drawable.d002_p001,R.drawable.d002_p002,R.drawable.d002_p003,
R.drawable.d002_p004,R.drawable.d002_p005,R.drawable.d002_p006};
Сейчас у меня есть 6 изображений, поэтому мне статически присваивается имя.
Если у меня есть 50 изображений, которые я не могу дать каждому имени файла в массиве, поэтому он должен быть динамическим, как я могу это достичь.
Вы можете использовать getIdentifier()
for (int j = 1; j < 6; j++) {
Drawable drawable = getResources().getDrawable(getResources()
.getIdentifier("d002_p00"+j, "drawable", getPackageName()));
}
Вы также можете использовать это:
int res = getResources().getIdentifier("<your pakecgename>:drawable/abc", null, null);
Что-то вроде этого может работать
Field[] drawables = android.R.drawable.class.getFields();
for (Field f : drawables) {
try {
System.out.println("R.drawable." + f.getName());
} catch (Exception e) {
e.printStackTrace();
}
}
Используйте следующую строку для динамического рисования:
Drawable drawable = this.getResources().getDrawable(R.drawable.yourDrawableID);
Это даст вам желаемый Drawable.
public static Drawable getImage(Context context, String name) {
return context.getResources().getDrawable(context.getResources().getIdentifier(name, "drawable", context.getPackageName()));
}
String[] names = new String []{"yout names..."};
for(String n: names) {
Utils.GetDrawableByName(n,this);
}
public class Utils {
public static Drawable GetDrawableByName(String name,Activity context){
Resources res = context.getResources();
return res.getDrawable(res.getIdentifier(name,"drawable",context.getPackageName()));
}
}
используйте этот код для создания массива, а затем используйте этот массив
int image[] = new int[50];
for (int i = 1 ; i <= 50 ; i++)
{
images[i] = "R.drawable.d002_p00"+i;
}
Главное, что вам нужно позаботиться, это имя файла должно начинаться с "d002_p00" этого и после цифры от 1 до 50