2013-04-18 3 views
5

У меня есть изображение в Резе папки как этогоДоступ к изображениям динамически Рез папки Android

enter image description here

Я хочу открыть один динамически как этого

holder.Viewcover.setImageDrawable(Drawable.createFromPath("R.id." + CoverimgUrl.get(position))); 

CoverimgUrl является список, который имеет два имени изображения один: book_cover &, а другой - blank_image этот массив генерируется динамически, так как я могу установить это изображение из этого списка

В одном слове, как динамически получить доступ к изображению, которое находится в папке с возможностью переноса, и мне нужно получить это имя изображения из списка массивов?

ответ

8
Resources res = getResources(); 
String mDrawableName = "image_name"; 
int resourceId = res.getIdentifier(mDrawableName , "drawable", getPackageName()); 
Drawable drawable = res.getDrawable(resourceId); 
icon.setImageDrawable(drawable); 
+0

Большое спасибо человеку, проголосовавшему за вас – Anirban

+0

Придется подождать 5 мин. – Anirban

1

Первый Сделать CoverimgUrl список целочисленных

List<Integer> CoverimgUrl =new ArrayList<Integer>(); 
      CoverimgUrl.add(R.drawable.book_cover); 
      CoverimgUrl.add(R.drawable.blank_image); 

Тогда

holder.Viewcover.setImageResource(CoverimgUrl.get(position)); 
1

createFromPath ожидает путь к файлу, а не его ID.

Вы можете использовать следующее:.

Int ID = GetResources() getIdentifier (CoverimgUrl.get (положение), "идентификатор", getPackageName()); holder.Viewcover.setImageDrawable (getResources(). GetDrawable (id));

getIdentifier() получает идентификатор из строки. Когда вы используете класс «R», он содержит статические целые числа для идентификаторов. Таким образом, R.id.some_name на самом деле является целым числом, которое является идентификатором ресурса some_name.

Как только вы получите это целое число с помощью getIdentifier, вы можете использовать getResources(). GetDrawable(), чтобы получить drawable с данным ID.

Сообщите мне, если это работает.

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