从字符串值设置安卓图像

2022-09-02 11:44:54

目前,我正在我的Android应用程序中绘制PNG图像,如下所示:

ImageView image = new ImageView(context);
image.setImageDrawable(context.getResources().getDrawable(R.drawable.testimage))

如果我在数据库中有图像名称列表,有没有办法使用图像名称设置上面的可绘制对象?我已经有代码来浏览数据库,我只是希望根据从这里获取的值绘制图像。

例如,数据库的记录:

ID:    Name:    ImageName:
-      Test     testimage

因此,当我阅读此记录时,我有一个值为“testimage”的字符串,然后我想将可绘制的图像设置为。R.drawable.testimage

我想这样做的一种方式是这样的:

int image = R.drawable.blank; // blank image

// testimage.png is the image name from the database
if(imageName.toString().equals("testimage.png"))
    image = R.drawable.testimage;
else if(imageName.toString().equals("another.png"))
    image = R.drawable.another;
else if(imageName.toString().equals("etc.png"))
    image = R.drawable.etc;

但是,这并不是很有效!

谢谢


答案 1

有一种方法可以做到这一点,您可以使用Resources.getIdentifier()按字符串检索资源ID http://developer.android.com/reference/android/content/res/Resources.html

像这样:

int resourceId = Activity.getResources().getIdentifier("testimage", "drawable", "your.package.name");

答案 2

我正在使用:

int resId = getResources().getIdentifier("testimage", "drawable", getPackageName());
image.setImageResource(resId);

“testimage” - 例如,对应于testimage.jpg,即不包括“.jpg”

“drawable” - 是资源类型,如:@drawable/testimage

Check Resources.getIdentifier(...)


推荐