Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 86
#1

Как получить id ресурса по названию? - Программирование Android

07.05.2013, 17:45. Просмотров 2196. Ответов 14
Метки нет (Все метки)

Подскажите, как можно из строкового значения, где впринципе записана константа(R.drawable.123), перевести в значение int и чтобы его программа поняла.
Делаю так:

String i = "R.drawable.123";
imageView.setImageResource(Integer.parseInt(i)); // здесь присваиваю картинке значение, которое должно поидее браться из строкового параметра i

Не работает.
Буду благодарен,если подскажете что-то дельное. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2013, 17:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как получить id ресурса по названию? (Программирование Android):

Как получить ресурс из String с путем ресурса?
Как получить ресурс из String с путем ресурса? String source =...

Как получить значение текстового ресурса, не зная его имени?
Добрый день! Подскажи как можно получить значение текстового ресурса, имя...

Получить фото по названию города
У меня есть ключ от API PLACES и я хочу получить фото города. Но для этого мне...

Получить width и height картинки из ресурса
Добрый день! Что то я уже запарился искать решение. А задача на вид...

Получить иконку чужой программы по названию класса
Подскажите пожалуста! Это не ланчер, а отладчик МОИХ-же программ. Для каждой...

Получить имя ресурса на котором был произведен клик
Допустим есть картинка с названием 1.jpg. Я кbдаю ее в drawable и получается ее...

14
dr_yand
156 / 138 / 14
Регистрация: 13.03.2013
Сообщений: 321
Записей в блоге: 3
07.05.2013, 17:51 #2
Можете подробней рассказать, для какой цели вы хотите сделать это?
0
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 86
07.05.2013, 17:58  [ТС] #3
Могу. Вообще все сложнее, но вопросы возникли только здесь. У меня парсится xml файл(стринговое значение как раз на выходе парсера), и в этом xml файле лежит инфа о нужной иконке(константа R.drawable.123), которую нужно применить в нужном месте при определенном условии. Соответственно нужно запихать полученное стринговое значение как константу картинки(int). Если есть идеи как по другому это сделать, с удовольствием готов рассмотреть их.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.05.2013, 18:03 #4
используйте метод getIdentifier().
1
c4sp3r
0x5B4C322291BD52AE
93 / 93 / 5
Регистрация: 04.03.2013
Сообщений: 295
07.05.2013, 19:47 #5
Termit___,

а чем такой вариант не устраивает:
Java
1
final int[] iconsIDs = { R.drawable.icon1, R.drawable.icon2 ... };
Правда если ресурсов много такой вариант не очень удобен.

V0v1k,

Note: use of this function is discouraged. It is much more efficient to retrieve resources by identifier than by name.

Я недавно сам испытал тормоза из-за этого метода пришлось от него все таки отказаться в пользу варианта что привел выше другой альтернативы не нашел пришлось даже генератор написать чтоб в ручную не вбивать. Мне надо было инициализировать большое кол-во картинок вариант с использованием assets мне не подошел.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.05.2013, 20:14 #6
иногда это единственный вариант, например если нужно получить ресурсы с другого приложения.
0
c4sp3r
0x5B4C322291BD52AE
93 / 93 / 5
Регистрация: 04.03.2013
Сообщений: 295
07.05.2013, 20:29 #7
есть еще один способ но мне он тоже не понравился http://www.anddev.org/viewtopic.php?t=575

Цитата Сообщение от V0v1k Посмотреть сообщение
например если нужно получить ресурсы с другого приложения.
Ну да согласен но проще тогда уже выдрать ресурсы из этого другого приложения если их не много.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.05.2013, 20:35 #8
в смысле выдрать?

Добавлено через 3 минуты
c4sp3r, ни первый, ни второй пример не поможет если, например, эта xml-ка приходит с сервера...
0
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 86
07.05.2013, 20:44  [ТС] #9
XML-ка приходитн не с сервера. Она выбирается в предыдущем активити в зависимости от условия(по выбору пользователя). Буду курить маны про getIdentifier().
Спасибо Вовику. Попозже отпишусь получилось или нет.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.05.2013, 20:48 #10
Цитата Сообщение от Termit___ Посмотреть сообщение
XML-ка приходитн не с сервера. Она выбирается в предыдущем активити в зависимости от условия(по выбору пользователя).
а почему бы в xml-ку не писать сразу id? и зачем вообще вы используете xml? все что нужно можно передать в интенте.
0
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 86
07.05.2013, 22:42  [ТС] #11
Я в xml-ке и пишу строку равную id (R.drawable.123). Есть большой список профайлов, в котором хранится инфа по конкретному профайлу(имя,прозвище....иконка, и тд.) У каждого профайла есть свой xml файл, который парсится в зависимости от того, кого выбрали(в предыдущем активити). Можно конечно это все через intent передать, но профайлов немало, и код получится километровый, если передавать по каждому профайлу всю кучу инфы.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.05.2013, 22:46 #12
так в чем проблема писать в xml не строку "R.drawable.123", а значение константы R.drawable.123?
0
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 86
08.05.2013, 09:47  [ТС] #13
0_о. Ошибка построения xml тогда.

Добавлено через 26 минут
Да, метод getIdentifier помог. Очередной раз спасибо Вовику. Уже не первый раз выручает.
Давайте теперь чуть усложним задачу:
Можно ли тоже самое провернуть, но чтоб в одном текстовом поле было не одно значение картинки,а последовательность.( icon=pic1,pic2,pic3...) и чтобы эта строка парсилась и иконки строились в том порядке, в котором они стоят в строке xml файла. На сколько я понимаю тут нужен цикл. Но опять же не совсем понимаю как правильно разобрать строку, чтоб запятую понял как разделитель.
Конечно есть вариант проще, просто каждую иконку одной строкой, но их довольно много, и получится много строк. Последовательностью было бы красивее на мой взгляд.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
08.05.2013, 12:20 #14
Java
1
str.split(",");
0
c4sp3r
08.05.2013, 19:34     Как получить id ресурса по названию?
  #15

Не по теме:

Цитата Сообщение от V0v1k Посмотреть сообщение
в смысле выдрать?
Цитата Сообщение от V0v1k Посмотреть сообщение
ни первый, ни второй пример не поможет если, например, эта xml-ка приходит с сервера...
похоже мы друг друга не поняли да и я не совсем понял что нужно ТС

0
08.05.2013, 19:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2013, 19:34
Привет! Вот еще темы с ответами:

Как перевести строковое значение ресурса проекта в применямое?
Простите сразу за столь неуместное слово "применяемое", но я не знаю, что лучше...

Как получить hWnd ресурса?
как получить hWnd ресурса? Есть у меня на форме ресурса TreeView но для того...

Как получить скриншот стороннего ресурса?
привет.Как можно осуществить задумку?На выходе должно быть изображение. ...

Как получить индекс listBox по названию
Добрый день уважаемые программисты! Вот увидел ваш ваш форум в поисках соей...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru