Мои пункты меню будут значительно увеличены, поэтому я хотел бы знать, могу ли я использовать Array, map или hashmap в выражениях, чтобы иметь меньше повторений. Теперь у меня есть
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle item selection
var messages: ArrayList<String>
var timestamps: ArrayList<String>
var linknames: ArrayList<String>
var parsedData: ParsedData
return when (item.itemId) {
dataIdRead[0] -> {
Thread(Runnable {
parsedData = GetMessages(dataCity[0]).getParsedData()
timestamps = parsedData.timestamps
messages = parsedData.messages
linknames = parsedData.linknames
runOnUiThread {
rv_message_list.adapter =
MessageAdapter(messages, timestamps, linknames, this)
button.visibility = View.VISIBLE
}
}).start()
true
}
dataIdRead[1] -> {
Thread(Runnable {
parsedData = GetMessages(dataCity[1]).getParsedData()
timestamps = parsedData.timestamps
messages = parsedData.messages
linknames = parsedData.linknames
runOnUiThread {
rv_message_list.adapter =
MessageAdapter(messages, timestamps, linknames, this)
button.visibility = View.VISIBLE
}
}).start()
true
}
dataIdRead[2] -> {
Thread(Runnable {
parsedData = GetMessages(dataCity[2]).getParsedData()
timestamps = parsedData.timestamps
messages = parsedData.messages
linknames = parsedData.linknames
runOnUiThread {
rv_message_list.adapter =
MessageAdapter(messages, timestamps, linknames, this)
button.visibility = View.VISIBLE
}
}).start()
true
}
else -> super.onOptionsItemSelected(item)
и
val dataIdRead = arrayOf(R.id.helsinki, R.id.vantaa, R.id.espoo)
val dataCity = arrayOf("helsinki", "vantaa", "espoo")
Что-то, что заставило бы его выглядеть примерно так
return when (item.itemId) {
*some magic* -> {
Thread(Runnable {
parsedData = GetMessages(*some magic*).getParsedData()
timestamps = parsedData.timestamps
messages = parsedData.messages
linknames = parsedData.linknames
runOnUiThread {
rv_message_list.adapter =
MessageAdapter(messages, timestamps, linknames, this)
button.visibility = View.VISIBLE
}
}).start()
true
}
else -> super.onOptionsItemSelected(item)
Я пробовал пример для каждого, но в начале Строка return when (item.itemId) {
ждет выражения, и я с этим не справился.