๐ ์ด์ ๋ด์ฉ
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ
LazyRow(horizontalArrangement = Arrangement.spacedBy(26.dp)) {
rankList?.let {
// rank ๊ฐ์ ๊ธฐ์ค์ผ๋ก 2, 1, 3 ์์๋๋ก ์ ๋ ฌํ๊ธฐ
val sortedList = it.sortedBy { item -> when (item.rank) {
2 -> 0
1 -> 1
3 -> 2
else -> Int.MAX_VALUE // ์์ํ์ง ๋ชปํ ๊ฐ์ ๋งจ ๋์ผ๋ก ๋ฐฐ์น
}}
itemsIndexed(sortedList) { index, item ->
RankItem(item = item)
}
}
}
๐ sortedBy ํจ์์ ๊ธฐ๋ณธ ๊ตฌ์กฐ
val sortedList = list.sortedBy { item -> /* ์ ๋ ฌ ๊ธฐ์ค */ }
: ๋๋ค์ ์์์ ๊ฐ ์์์ ๋ํ ์ ๋ ฌ ๊ธฐ์ค์ ์ ์ํจ.
: sortedBy๋ ๋๋ค์์ ํตํด ๊ฐ ์์์ ๋ํด ๊ฐ์ ์ถ์ถํ๊ณ , ๊ทธ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํฉ๋๋ค.
์์ :
val items = listOf(3, 1, 2, 5, 4)
val sortedItems = items.sortedBy { it } // ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
println(sortedItems) // [1, 2, 3, 4, 5]
โญ๏ธ sortedBy์ when์ ํ์ฉํด์ ๋ฆฌ์คํธ ์ฌ์ ๋ ฌ
val rankList = listOf(
RankItem(rank = 2, name = "User 2"),
RankItem(rank = 1, name = "User 1"),
RankItem(rank = 3, name = "User 3")
)
val sortedList = rankList.sortedBy { item ->
when (item.rank) {
2 -> 0 // 2์๋ ๊ฐ์ฅ ๋จผ์ ์ค๋๋ก 0์ ๋ฐํ
1 -> 1 // 1์๋ ๋ ๋ฒ์งธ๋ก ์ค๋๋ก 1์ ๋ฐํ
3 -> 2 // 3์๋ ์ธ ๋ฒ์งธ๋ก ์ค๋๋ก 2๋ฅผ ๋ฐํ
else -> Int.MAX_VALUE // ์์์น ๋ชปํ ๊ฐ์ ๋งจ ๋์ผ๋ก ๋ฐฐ์น
}
}
println(sortedList) // ์์๊ฐ 2, 1, 3 ์์๋ก ์ ๋ ฌ๋ ๋ฆฌ์คํธ ์ถ๋ ฅ
-> ์ด๋ ๊ฒ ํ๋ฉด sortedBy๊ฐ ๋๋ค์์ผ๋ก ์ ๋ฌ๋ฐ์ ์ ๋ ฌ๊ธฐ์ค ๋๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํจ!!
์ค์ํ ์ : ๋ฐํ๊ฐ์ผ๋ก๋ ์๋ก ์ ๋ ฌ๋ ๋ฆฌ์คํธ๊ฐ ์์ฑ๋๋ฉฐ, ์๋ณธ ๋ฆฌ์คํธ๋ ๋ณ๊ฒฝ๋์ง ์๋๋ค!