Подтвердить что ты не робот

Преобразовать строку, содержащую идентификатор, в идентификатор Integer

У меня есть короткий вопрос:

Как можно преобразовать String, содержащую Id Drawable, который является

String idString = "R.drawable.bubblegum";

в целое число,

idInt

чтобы я мог использовать этот идентификатор для ссылки на изображение (которое используется в SimpleAdapter)

Итак, чтобы сделать пример, я не могу этого сделать:

bubble.setImageDrawable(this.getResources().getDrawable(idString));
//not possible, cause idString is a String an not an Id/Int

Итак, у меня есть String, содержащий идентификатор, но, к сожалению, как строка.

Спасибо!

4b9b3361

Ответ 1

По крайней мере, я не мог найти решение этой проблемы. Кажется, что нет способа преобразовать String "R.id.mytext" в целое число, такое как R.id.mytext, которое может быть использовано в findViewById (R.id.myText).

Ответ 2

Хотя этот вопрос уже довольно старый, то, что вам не хватает, заключается в том, что "id" и "drawable" - это разные типы ресурсов. Поэтому вместо

getResources().getIdentifier(stringId, "id", "my.Package");

это

getResources().getIdentifier(stringId, "drawable", "my.Package");

Вы также можете получить имя пакета с контекстом активности, например activityContext.getPackageName()

/**
 * Returns Identifier of String into it ID as defined in R.java file.
 * @param pContext
 * @param pString defnied in Strings.xml resource name e.g: action_item_help
 * @return
 */
public static int getStringIdentifier(Context pContext, String pString){
    return pContext.getResources().getIdentifier(pString, "string", pContext.getPackageName());
}

Ответ 3

Вызовите getIdentifier() объекта Resources, который вы получаете через getResources(), как показано в этих вопросах StackOverflow:

среди других.

Ответ 4

Вы можете попробовать следующее

int id = getResources().getIdentifier("arr_name"+positionSelected,
                        "array", rootview.getContext().getPackageName());

Я использую в раскрывающемся списке spinner, получаю строку массива за родительским spinner может помочь вам!

Ответ 5

int idInt = R.drawable.bubblegum;

Если там что-то мне не хватает.

Ответ 6

если ваш idString является постоянным, т.е. он не изменяется во время выполнения, следуйте за ответом DeeV. Если он изменится, вы можете взглянуть на getIdentifier метод.