The alternative to switch
in Kotlin is when
. So, inside a recycler view adapter, when I am returning view type, I use when
:
You’re using when
like a simple Java switch
statement, which is okay but not very idiomatic and can be improved. You can refactor your code in two steps:
Kotlin's when
can be used as an expression, it returns a value if you wish:
override fun getItemViewType(position: Int): Int {
return when (position) {
0 -> ItemViewType.TITLE.type
1 -> ItemViewType.SUBTITLE.type
2 -> ItemViewType.ITEM.type
else -> -1
}
}
The function body, now consisting of a single statement, can be changed into an expression body:
override fun getItemViewType(position: Int) = when (position) {
0 -> ItemViewType.TITLE.type
1 -> ItemViewType.SUBTITLE.type
2 -> ItemViewType.ITEM.type
else -> -1
}