Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 85
#1

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

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

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

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

Не работает.
Буду благодарен,если подскажете что-то дельное. Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2013, 17:45     Как получить id ресурса по названию?
Посмотрите здесь:
Как получить ресурс из String с путем ресурса? Android
Как получить значение текстового ресурса, не зная его имени? Android
Получить фото по названию города Android
Android Получить width и height картинки из ресурса
Android Получить иконку чужой программы по названию класса
Android Как перевести строковое значение ресурса проекта в применямое?
Идентификатор ресурса Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dr_yand
156 / 138 / 6
Регистрация: 13.03.2013
Сообщений: 321
Записей в блоге: 3
07.05.2013, 17:51     Как получить id ресурса по названию? #2
Можете подробней рассказать, для какой цели вы хотите сделать это?
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 85
07.05.2013, 17:58  [ТС]     Как получить id ресурса по названию? #3
Могу. Вообще все сложнее, но вопросы возникли только здесь. У меня парсится xml файл(стринговое значение как раз на выходе парсера), и в этом xml файле лежит инфа о нужной иконке(константа R.drawable.123), которую нужно применить в нужном месте при определенном условии. Соответственно нужно запихать полученное стринговое значение как константу картинки(int). Если есть идеи как по другому это сделать, с удовольствием готов рассмотреть их.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.05.2013, 18:03     Как получить id ресурса по названию? #4
используйте метод getIdentifier().
c4sp3r
0x5B4C322291BD52AE
92 / 92 / 5
Регистрация: 04.03.2013
Сообщений: 295
07.05.2013, 19:47     Как получить id ресурса по названию? #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 мне не подошел.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.05.2013, 20:14     Как получить id ресурса по названию? #6
иногда это единственный вариант, например если нужно получить ресурсы с другого приложения.
c4sp3r
0x5B4C322291BD52AE
92 / 92 / 5
Регистрация: 04.03.2013
Сообщений: 295
07.05.2013, 20:29     Как получить id ресурса по названию? #7
есть еще один способ но мне он тоже не понравился http://www.anddev.org/viewtopic.php?t=575

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

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

Добавлено через 26 минут
Да, метод getIdentifier помог. Очередной раз спасибо Вовику. Уже не первый раз выручает.
Давайте теперь чуть усложним задачу:
Можно ли тоже самое провернуть, но чтоб в одном текстовом поле было не одно значение картинки,а последовательность.( icon=pic1,pic2,pic3...) и чтобы эта строка парсилась и иконки строились в том порядке, в котором они стоят в строке xml файла. На сколько я понимаю тут нужен цикл. Но опять же не совсем понимаю как правильно разобрать строку, чтоб запятую понял как разделитель.
Конечно есть вариант проще, просто каждую иконку одной строкой, но их довольно много, и получится много строк. Последовательностью было бы красивее на мой взгляд.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
08.05.2013, 12:20     Как получить id ресурса по названию? #14
Java
1
str.split(",");
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2013, 19:34     Как получить id ресурса по названию?
Еще ссылки по теме:
Android Не создаёт Bitmap из ресурса
Изменение строкового ресурса Android
Android Программное добавление строкового ресурса
Получение ресурса string в классах Android
Русские буквы в имени ресурса Android

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

Или воспользуйтесь поиском по форуму:
c4sp3r
08.05.2013, 19:34     Как получить id ресурса по названию?
  #15

Не по теме:

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

Yandex
Объявления
08.05.2013, 19:34     Как получить id ресурса по названию?
Ответ Создать тему
Опции темы

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