Обзор
Я пытаюсь добавить пользовательский макет к элементу управления Android Spinner, чтобы за ним было изображение, за которым сразу следовал какой-то текст. Однако к спиннеру будет добавлено более двухсот строк, поэтому я использую функцию для получения подходящего изображения ресурса (mipmap или drawable). У меня есть специальный адаптер для Spinner, который отлично работает.
Проблема
Проект не будет создан и всегда будет зависать внутри функции, которая выбирает соответствующее изображение (хотя каждый раз на одной строке). Базовая c настройка функции / условия включена ниже.
Сообщение об ошибке не очень ясно:
e: org.jetbrains.kotlin.util.KotlinFrontEndException: Exception while analyzing expression at (821,13) in...
Решение
Если бы я сделал предположение, это потому, что внутри условного оператора слишком много ресурсов и слишком много памяти израсходовано.
Вопрос
Существует ли более эффективный способ обработки добавления этих ресурсов / изображений в счетчик (т. Е. Оператор switch, отображение и т. Д. c.)?
val every_team_arr = arrayOf<String>("Team 1", "Team 2", "Team 3", ...) // Over 200 teams in total
В функции onCreate () override fun:
var team_list = ArrayList<Team>()
for (team in every_team_arr)
{
team_list.add(Team(team, getEveryTeamImage(team)))
}
Вот функция и условие, которое выбирает соответствующее изображение. Это где ошибка происходит, каждый раз в другом месте.
fun getEveryTeamImage(team: String): Int {
if (team == "Team 1") {
return R.drawable.team_1
}
else if (team == "Team 2") {
return R.drawable.team_2
}
else if (team == "Team 3") {
return R.drawable.team_3
}
else if (team == "Team 4") {
return R.drawable.team_4
}