如何处理列表首选项的重复值?

问题描述 投票:0回答:1

我正在创建具有列表首选项的货币格式功能。

条目列表如下:

<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);
            }
        }
.....

更新:

经过大量搜索后,我得出结论,我必须使用另一个列表来完成此操作。

<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())];
android sharedpreferences android-preferences preference listpreference
1个回答
0
投票

根据您的情况,您可以使用HASHSET Java集合库。哈希集基本上在需要存储唯一数据时使用。-声明String类型的哈希。-从列表数组中提取字符串,并使用条件大小和增量的for循环将其一一存储在哈希集中。-然后声明一个String类型的ArrayList。-使用条件哈希集大小和增量创建for循环,并使用arraylist'addAll()'将哈希集数据存储到新的arraylist中。-上面的步骤是因为哈希集不会以索引方式存储数据,因此在获取索引特定数据时会遇到麻烦。

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

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

这是您将如何声明和初始化哈希集和数组列表的方法。

© www.soinside.com 2019 - 2024. All rights reserved.