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