从字符串设置setImageResource

23

我想根据我的字符串更改ImageView的src,我有如下代码:

ImageView imageView1 = (ImageView)findViewById(R.id.imageView1);

String correctAnswer = "poland";
String whatEver = R.drawable+correctAnswer;
imageView1.setImageResource(whatEver);

当然它不起作用。我如何通过编程更改图像?

2个回答

39
public static int getImageId(Context context, String imageName) {
    return context.getResources().getIdentifier("drawable/" + imageName, null, context.getPackageName());
}

使用: imageView1.setImageResource(getImageId(this, correctAnswer);

注意:不要包括扩展名(例如 ".jpg")。

示例:图像为 "abcd_36.jpg"

Context c = getApplicationContext();
int id = c.getResources().getIdentifier("drawable/"+"abcd_36", null, c.getPackageName());
((ImageView)v.findViewById(R.id.your_image_on_your_layout)).setImageResource(id);

对于 imagename,我们是要传递完整的名称,例如 "news.png",还是只传递没有扩展名的图像名称,例如 "news"?我尝试了两种方式,但都没有成功。 - Teoman shipahi
我无法让以下内容正常工作。我在https://dev59.com/NG855IYBdhLWcg3wfUZM#4313064找到了一个答案,其中包含 int resourceId = Activity.getResources().getIdentifier("testimage", "drawable", "your.package.name"); 它使用“drawable”作为第二个参数 getIdentifier(String name, String defType, String defPackage) - Alex Hedley

6

我不知道这是否完全符合您的意愿,但您可以设置一个HashMap,其中包含图像ID(整数)和正确答案的字符串。

    HashMap<String, Integer> images = new HashMap<String, Integer>();
    images.put( "poland", Integer.valueOf( R.drawable.poland ) );
    images.put( "germany", Integer.valueOf( R.drawable.germany ) );

    String correctAnswer = "poland";
    imageView1.setImageResource( images.get( correctAnswer ).intValue() );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接