API 19 之前的 Android Currency.getAvailableCurrencies()

标签 android currency

getAvailableCurrencies 方法仅从 API 19 (Kitkat) 开始可用。关于如何在以前的 API 中实现 Currency.getAvailableCurrencies 的相同结果有什么想法吗?

(我正在研究 API 15)

最佳答案

以下代码适用于 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()]);

关于API 19 之前的 Android Currency.getAvailableCurrencies(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27422513/

相关文章:

java - 重启安卓服务

ruby-on-rails - 创建属性 'currency'的弃用警告

android - WebView 大小正在扩大,但没有按照其中的文本收缩

Android getChildFragmentManager() 级别 API < 17

ruby-on-rails - 在 rails 中使用 money_column gem

lua - 格式化数字以分隔千值(例如 12000000 将变为 12 000 000)

ruby-on-rails - 在金钱和时间上添加尾随零

.net - 设置货币格式而不进行四舍五入

java - Android 由 : java. lang.NullPointerException 引起

android - 数据绑定(bind)失败, "couldn' 猜猜”