Я хочу создать список пар используемых в настоящее время валют и их отображаемое имя. Если возможно, я бы хотел немного уменьшить (подробнее об этом ниже).
Я пытался использовать Currency.getAvailableCurrencies (), но он возвращает валюты, которые больше не используются. Лучшее решение, которое у меня сейчас есть, - это использование Locale.getAvailableLocales () и получение оттуда валют (см. Следующий код).
Я использую SortedSet для удаления дубликатов (которых достаточно в списке локалей) ичтобы это было отсортировано. Пара состоит из отображаемого имени и символа валюты.
val filteredListOfCurrencies: SortedSet<Pair<String?,String?>> = listOfLocale.map{Currency.getInstance(it)?.displayName to Currency.getInstance(it)?.symbol}.toSortedSet(
compareBy{it.first})
Мои вопросы: 1) Есть ли лучший способ сделать это? 2) Есть ли способ уменьшить список (в настоящее время> 150 валют)
Список будет использоваться для приложения отслеживания затрат. Стандарт заключается в том, что будет использоваться NumberFormat.getCurrencyInstance (), то есть предустановленная валюта будет принадлежать устройству, но я хочу дать пользователю возможность изменять свою валюту (а также переключаться на «валюту устройства»). Поэтому «второстепенная валюта», скорее всего, будет охватываться «валютой устройства», поэтому, если это возможно, я бы хотел сократить список до более короткого, в противном случае он может быть слишком большим и, следовательно, плохим пользовательским интерфейсом. .