Как я могу получить ресурс по имени на основе строковой переменной?

1

я хочу делать

String childImg = "childIcon";
textView.setCompoundDrawablesWithIntrinsicBounds(R.drawable.????, 0, 0, 0);

он ожидает int, но у меня есть строка. как мне обойти это?

Теги:

4 ответа

3
Лучший ответ

Я использую это, чтобы получить идентификатор drawable

getResources().getIdentifier(childImg, "drawable", getPackageName())
1

использовать getIdentifier()

int id = getResources().getIdentifier("name_of_resource", "id", getPackageName());
  • 0
    не работает по какой-то причине. изображение просто не подходит
  • 0
    возможное решение stackoverflow.com/questions/4427608/…
1

Делай это так:

String childImg = "childIcon";
int id = getResources().getIdentifier(childImg, "drawable", getPackageName())
textView.setCompoundDrawablesWithIntrinsicBounds(id, 0, 0, 0);
  • 0
    Есть ли проблемы с производительностью при использовании getIdentifier ()?
  • 0
    да, немного, так как он должен перебрать все элементы вашего ресурса, чтобы найти правильный.
Показать ещё 3 комментария
0
textView.setCompoundDrawablesWithIntrinsicBounds(Resources.getIdentifier(childImg), 0, 0, 0);
  • 0
    не работает по какой-то причине. изображение просто не подходит

Ещё вопросы

Сообщество Overcoder
Наверх
Меню