Страница 1 из 1
Создать массив со значениями из ресурсов
Добавлено: 03 фев 2015, 11:34
grem17
всем привет
имеется большой список по типу "имя, значение", хочу создать его в ресурсах, например через string
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="red">color1</string>
<string name="green">color2</string>
.......
</resources>
вопрос, как заполнить этими данными массив?
в дальнейшем массив будет обрабатываться в цикле и на основе "имени" будет извлекаться "значение"
Re: Создать массив со значениями из ресурсов
Добавлено: 03 фев 2015, 12:55
grem17
частично разобрался, массив со значениями можно создать через вложенный массив
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="Sm">sm.gif</string>
<string name="Sa">sa.gif</string>
<string-array name="s_array">
<item>"@string/Sm"</item>
<item>"@string/Sa"</item>
</string-array>
</resources>
Resources res = context.getResources();
String[] sk_verb_array = res.getStringArray(R.array.s_array); // Получаем массив из ресурсов
ArrayList<String> sk_verb = new ArrayList<String>();
sk_verb.addAll(Arrays.asList(sk_verb_array));
for (int i = 0; i < sk_verb.size(); i++) {
String dd = sk_verb.get(i).toString();
Log.d("1", dd);
}
в итоге получаю строку
@string/Sm
@string/Sa
а как получить на которую ссылается например @string/Sm ?
или как из строки @string/Sm получить значение ресурса?
Re: Создать массив со значениями из ресурсов
Добавлено: 03 фев 2015, 18:27
altwin
Чем вас не устраивает HashMap ?
Re: Создать массив со значениями из ресурсов
Добавлено: 04 фев 2015, 08:24
grem17
HashMap можно заполнить из ресурсов (res\values\strings.xml)?
допустим я могу создать в коде перечень инфы для добавления, в виде "ключ-значение", это я и раньше мог сделать, интересует именно способ заполнения массива из ресурсов
Re: Создать массив со значениями из ресурсов
Добавлено: 04 фев 2015, 08:31
grem17
нашел неплохой пример, думаю это сработает
надо заполнить 2 массива, одинаковым кол-ом строк-значений
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="countries_names">
<item>USA</item>
<item>Russia</item>
</string-array>
<integer-array name="countries_codes">
<item>1</item>
<item>7</item>
</integer-array>
</resources>
String[] countriesNames = getResources().getStringArray(R.array.countries_names);
int[] countriesCodes = getResources().getIntArray(R.array.countries_codes);
HashMap<String, Integer> myMap = new HashMap<String, Integer>();
for (int i = 0; i < countriesNames.length; i++) {
myMap.put(countriesNames[i], countriesCodes[i]);
}
Re: Создать массив со значениями из ресурсов
Добавлено: 05 фев 2015, 12:00
grem17
еще вопрос по теме, вложенный массив имеет ссылки на графические ресурсы, которые я потом буду использовать в проге...
после обработки, получаю на выходе строковое значение String с вот таким значем \res\drawable\aa (это картинка), а как мне строку преобразовать в ресурс и использовать ее? или как хранить ссылку на ресурс, чтобы потом его можно было использовать по назначению?
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="key">
<item>aa</item>
<item>bb</item>
</string-array>
<string-array name="value">
<item>@drawable/aa</item>
<item>@drawable/bb</item>
</string-array>
</resources>
Re: Создать массив со значениями из ресурсов
Добавлено: 05 фев 2015, 12:31
grem17
все, нашел сам
public static int getResourseId(String pVariableName, String pResourcename, String pPackageName)
{
try {
return getResources().getIdentifier(pVariableName, pResourcename, pPackageName);
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
getResourseId("myIcon", "drawable", getPackageName());