Android 找到可以用绳子拉的

Android 找到可以用绳子拉的,android,Android,可能重复: 首先,我很抱歉这个标题,但我不知道我能设置什么标题 好的,我的问题是: 我将从外部数据库接收一个字符串,例如:“Picture001” 在res/drawable文件夹中,我有一张名为Picture001的图片 我想将该图片设置为ImageView的背景(源) 问题是,如何使用从外部数据库获得的字符串查找此图片 非常感谢你 您也可以像这样使用反射: Class c = Class.forName("your.project.package.R"); Field f = c.getD

可能重复:

首先,我很抱歉这个标题,但我不知道我能设置什么标题

好的,我的问题是:

我将从外部数据库接收一个字符串,例如:“Picture001”

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

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

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


非常感谢你

您也可以像这样使用反射:

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建议的。

是的,您可以使用


虽然效率不高,但它可以查找临时资源。

我认为
资源。getIdentifier
可能是一种比这更简单的方法。太好了!我不知道这个方法。谢谢是的,但是这个解决方案比机器人更快(超过40%)@你能提供一些来源吗?我检查了一下,发现差别可以忽略不计。我还读到大家不断提到的blogpost,但除了一个可疑的说法,即反射速度快5倍之外,没有其他指标。对我来说,结果似乎只取决于资源在R文件中的位置(越往上,查找速度越快)。@A droid-我找到了帖子的链接,以防你想查看:@QuinDa很棒!如果答案对您有效,请不要忘记单击答案旁边的复选标记——它将帮助您在将来从我们那里获得更好的答案!;)我试过了,但上面写着:投票需要15点声望):@QuinDa是复选标记,而不是向上箭头(是的,它需要15点声望)。但看起来你已经找到了!:)赶快投票吧!我用以下代码修复了它:
drawable=resources.getDrawable(resources.obtainTypedArray(R.array.array\u name).getResourceId(array\u index,0),context.getTheme())
Context context = imageView.getContext();
int id = context.getResources().getIdentifier("picture0001", "drawable", context.getPackageName());
imageView.setImageResource(id);