Я создаю функцию формата валюты с предпочтением списка.
Список записей выглядит следующим образом:
<string-array>
.....
<item>Australia</item>
<item>Canada</item>
<item>United Kingdom</item>
<item>United States</item>
<item>Uruguay</item>
.....
</string-array>
И соответствующий список значений:
<string-array>
.....
<item>$</item>
<item>$</item>
<item>£</item>
<item>$</item>
<item>$U</item>
.....
</string-array>
Когда я выбираю Австралию, выбираются Соединенные Штаты. Это связано с тем, что обе записи имеют одно и то же значение, и система выбирает последний элемент, если имеются повторяющиеся значения. Как мы должны легко преодолеть эту проблему? Я могу использовать уникальное значение с префиксом или суффиксом для устранения дублирования, но это заставит меня проделать дополнительную работу по кодированию и декодированию значения всякий раз, когда это необходимо.
Я попытался установить предпочтение динамически, но безуспешно:
....
CharSequence[] entries = currencyPreference.getEntries();
for (int index = 0; index < entries.length; index++) {
if (entries[index].equals(entryCurrency)) {
currencyPreference.setValueIndex(index);
}
}
.....
Обновлено:
После долгих поисков я пришел к выводу, что мне пришлось использовать другой список для выполнения sh этого.
<string-array name="entry_values_currency">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
</string-array>
<string-array name="currency_symbols">
<item>$</item>
<item>$</item>
<item>£</item>
<item>$</item>
<item>$U</item>
</string-array>
И получить символ следующим образом:
String currency = getResources().getStringArray(R.array.currency_symbols)[Integer.parseInt(currencyPreference.getValue())];