Ответ 1
По крайней мере, я не мог найти решение этой проблемы. Кажется, что нет способа преобразовать String "R.id.mytext" в целое число, такое как R.id.mytext, которое может быть использовано в findViewById (R.id.myText).
У меня есть короткий вопрос:
Как можно преобразовать 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, содержащий идентификатор, но, к сожалению, как строка.
Спасибо!
По крайней мере, я не мог найти решение этой проблемы. Кажется, что нет способа преобразовать String "R.id.mytext" в целое число, такое как R.id.mytext, которое может быть использовано в findViewById (R.id.myText).
Хотя этот вопрос уже довольно старый, то, что вам не хватает, заключается в том, что "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());
}
Вызовите getIdentifier()
объекта Resources
, который вы получаете через getResources()
, как показано в этих вопросах StackOverflow:
среди других.
Вы можете попробовать следующее
int id = getResources().getIdentifier("arr_name"+positionSelected,
"array", rootview.getContext().getPackageName());
Я использую в раскрывающемся списке spinner, получаю строку массива за родительским spinner может помочь вам!
int idInt = R.drawable.bubblegum;
Если там что-то мне не хватает.
если ваш idString
является постоянным, т.е. он не изменяется во время выполнения, следуйте за ответом DeeV.
Если он изменится, вы можете взглянуть на getIdentifier метод.