我有一个包含图像名称列表的数据库列。我想使用setImageResource放入imageview。在我的其他应用程序中,我设法做到了这一点,但在这个应用程序中,imageview根本没有显示任何内容。
String Image1 = db.getImage1Now(RandomIndex);
imageViewDoThis1.setImageResource(getResources().getIdentifier( Image1, "drawable", getPackageName()));
如果我这样做:
imageViewDoThis1.setImageResource(R.drawable.image1);
然后它正在工作..帮助!
答案 0 :(得分:0)
使用此:
imageViewDoThis1.setImageResource(getResources().getIdentifier( "image1", "drawable", getPackageName()));
我认为getIdentifier
应该将字符串作为第一个参数。
答案 1 :(得分:0)
所以我遇到了与此非常相似的问题。
我的资源中有一堆图像,我希望能够存储属于数据库中每个项目的图像。我最终使用数据库中项目的id作为图像的唯一标识符。 ids对应于我的DbIcons类中的常量。当我构造我需要的任何对象时,我从该助手类中检索了资源Id。
当我想要检索正确的图像时,我会从数据库中获取id,然后调用静态方法getIcon(categoryId)。这返回了R.id值,并将其传递给ImageView。
这是我的代码剪辑。为了缩短它,我删除了大部分变量和切换语句:
public Category(int id) { this.id = id; this.name = ""; this.icon = null; this.iconResourceId = DbIcons.getIcon(id); this.plateIconResourceId = DbIcons.getPlateIcon(id); }
public class DbIcons { /* Category Ids */ private final static int CAT_BABY = 1; private final static int CAT_BAKED_GOODS = 2; private final static int CAT_BAKING = 3; /* Plate Ids */ private final static int PLATE_BABY = 1; private final static int PLATE_BAKED_GOODS = 2; private final static int PLATE_BAKING = 3; public static int getIcon(int cat) { switch (cat) { case CAT_BABY: return R.drawable.baby; case CAT_BAKED_GOODS: return R.drawable.bakedgoods; case CAT_BAKING: return R.drawable.baking; } return R.drawable.default; } public static int getPlateIcon(int plateIcon) { switch (plateIcon) { case PLATE_BABY: return R.drawable.baby_plate; case PLATE_BAKED_GOODS: return R.drawable.bakedgoods_plate; case PLATE_BAKING: return R.drawable.baking_plate; } return R.drawable.default; } }
我希望这是有道理和有帮助的。如果你想让我澄清更多,请问。