строку? Или для таких целей нужно отдельную мапу создавать?
Для чего?
возвращаясь к приложению с валютами, я ввожу в едиттекст название, мне нужно найти совпадения в словах хранящихся в string.xml, когда я найду совпадение я должен получить код валюты, и с помощью кода отобразить нужную валюту
string-array не подойдет?
так мне нужен идентификатор под каждое название
Можно сделать 2 string-array: один с кодами, другой с названиями и их грузить в хеш, например. Есть минус - нужно внимательно следить за порядком элементов массива, чтобы код точно соответствовал названию. Как вариант, можно сделать 1 string-array, где элементы будут в виде AUD|Australian dollar Грузить массив, разбивать строку по | на 2 части, извлекать код и название.
А енамы не подойдут? Currency.values().find { enum -> enum.id == text } ?: Currency.AED
про первый вариант думал, но если на сервак прилетят вдруг новые валюты нужно организовывать доп проверки) а вот второй вариант топ))
У второго тоже есть недостаток: для других языков придется дублировать весь массив с переводом.
по сути он и так дублируется под разные языки)
в идеале конечно хотелось бы функцию, которая возвратит мне мапу исходя из идентификатора и названия в string.xml, в виде: "aud", "Australian dollar", "awg", "Aruban florin" и т.д.
Это можно собрать из массива варианта №2
можно, но уже не будет особо смысла в этом, т.к. 2 массива строк я уже опишу в стрингах и доп мапу делать уже не понадобится на первый взгляд)
у меня минимум 2 языка, поэтому наверное нет
Обсуждают сегодня