2013-07-24 3 views
0

У меня есть столбец базы данных со списком имен изображений. Я хочу поместить изображение в imageview с помощью setImageResource. В моем другом приложении мне это удалось, но в этом приложении изображение не показывает ничего вообще.Как получить идентификатор ресурса из String

String Image1 = db.getImage1Now(RandomIndex); 
imageViewDoThis1.setImageResource(getResources().getIdentifier(Image1, "drawable", getPackageName())); 

Если бы я сделать это так:

imageViewDoThis1.setImageResource(R.drawable.image1); 

Затем он работает .. Помогите!

+0

И что находится в 'Image1' ... если это' 'image1" ', тогда он должен работать ... – Selvin

+0

Это изображение1, я не могу понять, почему это не работает. – user1816780

ответ

0

Используйте это:

imageViewDoThis1.setImageResource(getResources().getIdentifier("image1", "drawable", getPackageName())); 

Я думаю getIdentifier должна принимать строку в качестве первого параметра.

0

Так что у меня была проблема, очень похожая на это.

У меня было множество изображений в моих ресурсах, и я хотел иметь возможность хранить изображение, принадлежащее каждому элементу в базе данных. В итоге я использовал идентификатор элемента в базе данных как уникальный идентификатор для изображений. Иды соответствовали константам в моем классе DbIcons. Когда я построил любой объект, который мне нужен, я получил идентификатор ресурса из этого вспомогательного класса.

Когда я хотел получить правильное изображение, я бы получил идентификатор из базы данных, а затем вызвал статический метод 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; 
     } 
    } 

Я надеюсь, что это имеет смысл, и помогает. Если вы хотите, чтобы я уточнил больше, просто спросите.

Смежные вопросы