通过字符串查找drawable

时间:2012-11-12 20:25:22

标签: android

  

可能重复:
  Android - Open resource from @drawable String

首先抱歉标题,但我不确切知道我可以设置什么标题。

好的,这是我的问题:

我将从外部数据库中读取一个字符串,例如:'picture0001'。

在文件夹res / drawable中我有一张名为picture0001的图片。

我想将该图片设置为ImageView的背景(来源)。

问题是,如何使用从外部数据库获得的字符串来查找此图片。

非常感谢你。

2 个答案:

答案 0 :(得分:149)

是的,您可以使用Resources.getIdentifier()按名称查找。

Context context = imageView.getContext();
int id = context.getResources().getIdentifier("picture0001", "drawable", context.getPackageName());
imageView.setImageResource(id);

效率不高,但它可以查找偶尔的资源。

答案 1 :(得分:5)

你也可以使用这样的反射:

Class c = Class.forName("your.project.package.R");
Field f = c.getDeclaredField("drawable");
Class d = f.getDeclaringClass();
Field f2 = d.getDeclaredField("yourstring");
int resId = f2.getInt(null);
Drawable d = getResources().getDrawable(resId);

尽管如此,最好的解决方案是MarvinLabs所建议的。