我的项目中有一个小的SQLite数据库,我有表"产品"。该表的一列是String" image"。在活动中,我在Intent extras中收到产品ID,并从DB创建一个Product对象。在这个活动的布局中,我有一个ImageView。每次创建Product对象时,我都想将ImageView图像设置为存储在对象中的图像。我试着做以下事情:
ImageView product_image = (ImageView) findViewById(R.id.product_image);
product_image.setImageDrawable(Integer.parseInt("R.drawable."+productToPresent.getImage());
productToPresent
是我的Product对象,getImage返回图像字符串名称。
但是此时我的应用程序崩溃了,我在logcat中收到以下错误消息:
RuntimeException: Unable to start activity ComponentInfo{com.myapp.appname/com.myapp.appname.ActivityProductDetails}: java.lang.NumberFormatException: Invalid int: "R.drawable.cat02_prod02"
其中cat02_prod02是存储在我的数据库中的字符串和图像的文件名。
那怎么办呢?
答案 0 :(得分:2)
你可以这样做:
int id = getResources()
.getIdentifier("yourpackagename:drawable/" + StringGenerated, null, null);
这将返回您要访问的drawable的id
...然后您可以通过执行以下操作在imageview
中设置图片
imageview.setImageResource(id);