1

У меня есть Activity, который имеет переменную position, которая исходит из другого действия. Я обрабатываю эту переменную Intent, как показано ниже. (На самом деле position позиция ListView из другой деятельности.) и значение position переменных от 0 до 200Создание динамического источника R.drawable и ImageView

Я взял мой Extra, затем назначил его в строку, чем я проанализирован его в Integer. Это нормально и легко для меня и работает.

Intent i   = getIntent(); 
String position  = i.getStringExtra("POSITION"); 
int position_to_int = Integer.parseInt(position); 

Но моя проблема связана с ресурсами.

Просто хочу разместить изображение для моего LinearLayout динамически. У меня есть некоторые флаги стран, и они названы в формате, как 0.gif, 1.gif, 2.gif, 3.gif ...

Моя идея использует значение position переменной для этой цели.

но когда я пытаюсь использовать position_to_int переменная для имени флага, нормально возвращающая ошибка Eclipse. Поскольку R.drawble.XXX значения хранения в R.java

ImageView imageView = new ImageView(this); 
// setting image resource 
imageView.setImageResource(R.drawable.position_to_int); 

Как я могу использовать position_to_int переменную, чтобы показать ImageView динамически?

ответ

3

У вас нет доступа к нему напрямую. Вы должны будете получить ресурс, используя его имя:

private Drawable getDrawableResourceByName(int name) { 
    String packageName = getPackageName(); 
    int resId = getResources().getIdentifier("character_you_prefixed" + String.valueOf(name), "drawable", packageName); 
    return getResources().getDrawable(resId); 
} 

Обратите внимание, что ваши имена ресурсов должно начинаться с буквы, а не количество, иначе ваш проект не будет компилировать. Попробуйте добавить символ в начало каждого имени файла.

+0

Можете ли вы изменить имена переменных на имена переменных моего вопроса. (Я говорю о position_to_int) – hakiko

+1

@hakiko Просто позвоните getDrawableResourceByName (position_to_int), когда вам нужно извлечь. Хотя, если вы не можете понять, как использовать предоставленный мной код, вам стоит подумать о приобретении Java-книги, прежде чем работать с Android. –

+0

Это не работает, потому что целочисленное значение недопустимо Имя ресурса –

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