API 19之前的Android Currency.getAvailableCurrencies()

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

getAvailableCurrencies方法仅自API 19(Kitkat)起可用。关于如何在以前的API中获得Currency.getAvailableCurrencies相同结果的任何想法?

((我正在使用API​​ 15)

android currency
1个回答
6
投票

以下代码将同时在API> = 19和API <19上工作。

它生成两个CharSequence数组:一个包含按字母顺序排列的货币代码,相应货币货币的描述(代码+符号+货币名称)。

List < String > entries = new ArrayList < String > ();
List < String > countries = new ArrayList < String > ();

int currentapiVersion = android.os.Build.VERSION.SDK_INT;

// API >= 19
if (currentapiVersion >= 19) {
    Set < Currency > currencies = Currency.getAvailableCurrencies();
    for (Currency currency: currencies) {
        try {
            String listItem = currency.getCurrencyCode() + " (" + currency.getSymbol() + ")" + " " + currency.getDisplayName();
            entries.add(listItem);
            countries.add(currency.getCurrencyCode());
        } catch (Exception e) {}
    }
}

// API < 19
else {
    ArrayList < String > currencies = new ArrayList < String > ();
    Locale[] locales = Locale.getAvailableLocales();
    for (Locale locale: locales) {
        try {
            String val = Currency.getInstance(locale).getCurrencyCode();
            if (!currencies.contains(val))
                currencies.add(val);
        } catch (Exception exc) {
            // Locale not found
        }
        Collections.sort(currencies);
    }
    for (String currencyCode: currencies) {
        try {
            Currency currency = Currency.getInstance(currencyCode);
            String listItem = currency.getCurrencyCode() + " (" + currency.getSymbol() + ")" + " " + currency.getDisplayName();
            entries.add(listItem);
            countries.add(currency.getCurrencyCode());
        } catch (Exception e) {}
    }
}

// Result
CharSequence[] resultEntries = entries.toArray(new CharSequence[entries.size()]);
CharSequence[] resultCountries = countries.toArray(new CharSequence[countries.size()]);
© www.soinside.com 2019 - 2024. All rights reserved.