Я хочу использовать var, чтобы определить, какую фотографию загрузить в изображение-представление - Kotlin - PullRequest
0 голосов
/ 22 мая 2019

У меня есть var с видом пищи (например: пицца, бургер и др.), Я хочу использовать это var, чтобы загрузить определенное изображение на основе этого значения var из моего drawable каталог в представлении изображения без использования when.

У меня есть эти файлы: pizza.png, burger.png

Я хочу использовать что-то вроде этого:

var food = "pizza.png"
food_icon.setImageResource(R.drawable.food)//image is the pizza
food = "burger.png"
food_icon.setImageResource(R.drawable.food)//image is the burger

Есть ли способ сделать это?

Ответы [ 3 ]

2 голосов
/ 22 мая 2019

Вы можете использовать перечисление, соответствующее правому графическому элементу, например

enum class FoodTypes(private val value: Int) {
    PIZZA(R.drawable.pizza),   
    BURGER(R.drawable.burger);

    fun getValue(): Int = value
}

Тогда вы можете использовать это так

var food = FoodTypes.PIZZA
food_icon.setImageResource(food.getValue())
food = FoodTypes.BURGER
food_icon.setImageResource(food.getValue())
2 голосов
/ 22 мая 2019

Если я правильно понимаю ваш вопрос, вы можете использовать следующий метод:

Resources resources = context.getResources();
final int resourceId = resources.getIdentifier("[your_drawable_name]", "drawable", context.getPackageName());
return resources.getDrawable(resourceId);

При этом вы можете указать имя вашего rawable и загрузить его.Если вам нужен только resourceId, вы можете вернуть resourceId без получения самого drawable.

0 голосов
/ 22 мая 2019

почему бы не сделать это?

var food = R.drawable.pizza
food_icon.setImageResource(food)//image is the pizza
food = R.drawable.burger
food_icon.setImageResource(food)//image is the burger
...