5

我在 res 文件夹中有这样的图像

在此处输入图像描述

我想像这样动态访问这个

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

CoverimgUrl是一个列表,其中有两个图像名称一个是book_cover & 另一个是blank_image这个数组是动态生成的,所以我如何从该列表中设置这个图像

一句话,如何动态访问可绘制文件夹中的图像,我需要从数组列表中获取该图像名称?

4

3 回答 3

8
Resources res = getResources();
String mDrawableName = "image_name";
int resourceId = res.getIdentifier(mDrawableName , "drawable", getPackageName());
Drawable drawable = res.getDrawable(resourceId);
icon.setImageDrawable(drawable );
于 2013-04-18T06:18:40.357 回答
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));
于 2013-04-18T06:25:39.393 回答
1

createFromPath 需要文件的路径,而不是 ID。

您可以使用以下内容:

int id = getResources().getIdentifier(CoverimgUrl.get(position), "id", getPackageName()); holder.Viewcover.setImageDrawable(getResources().getDrawable(id));

getIdentifier() 从字符串中获取 ID。当您使用“R”类时,它包含用于 id 的静态整数。所以 R.id.some_name 实际上是一个整数,也就是 some_name 资源的 id。

一旦你用 getIdentifier 得到这个整数,你就可以使用 getResources().getDrawable() 来获取具有给定 ID 的可绘制对象。

让我知道这个是否奏效。

于 2013-04-18T06:30:38.837 回答