Динамические идентификаторы строк из XML русурсов в Android

Частая задача в программировании — получение строковых ресурсов, не зная их точных идентификаторов, или получая идентификаторы из других данных. Программирование под Android не является исключением, вот небольшая инструкция по теме составления динамических идентификаторов строковых переменных из XML ресурсов в Android.

В обычном случае строковый ресурс получается по своему идентификатору в области приложения, в данном случае идентификатор somevalue0:

getString(R.string.somevalue0);

В общем случае файл строковых ресурсов, например res/values/somevalues.xml, будет таким:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="somevalue0">Zero string</string>
    <string name="somevalue1">First string</string>
    <string name="somevalue2">Second string</string>
</resources>

Но как получить это же значение, если нам известен префикс somevalue и переменная со значением 0? Или больше — получить последовательно в цикле несколько динамических строковых значений? Например так:

"somevalue" + intVariable.toString()

Ответ в этом примере:

for (Integer i = 1; i < 3; i++) { int id = getResources().getIdentifier("somevalue" + i.toString(), "string", getPackageName()); String value = (String) getResources().getText(id); }[/code] Мы получаем идентификаторы строковых ресурсов, а потом получаем значение ресурса по его идентификатору. ВАЖНО: нужно не забывать про использовании контекста, если данный код выполняется из расширяющего адаптера, например, следует передавать в него контекст приложения. Тогда запись получения ресурсов будет предварена примерно таким префиксом, переданным как параметр в конструктор или метод класса: context.getResources().getText(id);

Инструкции по теме:

Добавить комментарий