2015-04-25 2 views
-2

у меня есть время цикла, которые создают свой массив строк, как показано нижеКак создать массив Drawable автоматически

String[] imageId = {"R.drawable.img0","R.drawable.img1"}; 

, но я хочу сохранить его в массив целых чисел

Integer[] imageId = {R.drawable.img20,R.drawable.img1}; 
+0

Вы не можете перейти от строки к целому, но вы можете просто получить целые числа в вашем цикле. –

+0

Используйте отражение, вместо использования такого массива –

ответ

0

Один из способов сделать это без использование рефлексии заключается в создании сопоставления для всех имеющихся у вас ресурсов (поскольку вы знаете все свои ресурсы в ресурсах во время компиляции):

static final Map<String, Integer> MAPPING; 
static { 
    final Map<String, Integer> tempMapping = new HashMap<>(); 
    tempMapping.put("R.drawable.img0", R.drawable.img20); 
    tempMapping.put("R.drawable.img1", R.drawable.img1); 
    tempMapping.put([your other drawables]); 
    MAPPING = Collections.unmodifiableMap(valuesByName); 
} 

После этого, в зависимости от логики вашего приложения, вы создаете свой массив имен drawables и преобразуете его в массив идентификаторов drawables с помощью карты.

+0

извините, но как я могу это использовать? –

+0

@ Amir.KH понял, что это не полная идея, отредактировал мой ответ. Пожалуйста, проверьте и скажите мне, если это недостаточно ясно. – AndroidEx

0

Я хочу, чтобы сохранить его в массив целых чисел

Вот пример, чтобы сохранить массив переменных в целое число:

int[] imageId = {R.drawable.image1, // index 0 
       R.drawable.image2, // index 1 
       R.drawable.image3, // index 2 
       R.drawable.image4 // index 3 
       }; 

Чтобы получить значение массива обратно:

int drawable1 = imageId[0] // returns R.drawable.image1 
int drawable2 = imageId[1] // returns R.drawable.image2 
int drawable3 = imageId[2] // returns R.drawable.image3 
int drawable4 = imageId[3] // returns R.drawable.image4 

Надеюсь, этот пример вам поможет.

Смежные вопросы