Как обрабатывать повторяющиеся значения для списка предпочтений? - PullRequest
0 голосов
/ 02 апреля 2020

Я создаю функцию формата валюты с предпочтением списка.

Список записей выглядит следующим образом:

<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())];

1 Ответ

0 голосов
/ 02 апреля 2020

В вашем случае вы можете использовать библиотеку коллекций HASHSET java. Hashset в основном используется, когда вам нужно хранить уникальные данные. - Объявите хеш типа String. - Извлеките строки из массива списка и сохраните их одну за другой в хэш-наборе, используя для l oop размер условия и приращение. - Затем объявите ArrayList типа String. - Создайте для l oop с условием размера и приращения хэш-набора и используйте arraylist 'addAll ()', чтобы сохранить данные хэш-набора в ваш новый массив. - Вышеприведенный шаг связан с тем, что хэш-набор не хранит данные в порядке индексации, и поэтому возникают проблемы при получении данных индекса, специфицирующих c.

    Hashset<String> hashset = new Hashset<>();
    hashset.add("your list array data");

    Arraylist<String> arraylist = new Arraylist<>();
    arraylist.addAll(hashset);

Это способ объявления и инициализации хэш-набора и массива данных. .

...