【发布时间】:2021-12-05 09:39:55
【问题描述】:
我正在构建一个 Android 应用程序,我想在其中实现 User 的自定义排序
让我详细解释一下要求。
假设有 15 个用户存储在 ArrayList 类型的 User 中,每个用户都有单独的角色映射。用户必须是grouped by roles,顺序相同as below。
1.Mechanic
2.Plumber
3.Electrician
此外,在角色组内应主要根据unread message count 排序,其次根据alphabetical order 排序
案例 1:没有未读消息
基于role-based grouping和alphabetical sorting(无未读消息),用户应按以下方式显示。(括号中的'0'表示未读消息数)
Aarav,Mechanic(0)
Dhruv,Mechanic(0)
Jason,Mechanic(0)
Pranav,Mechanic(0)
Zeplin,Mechanic(0)
Amit,Plumber(0)
Baskaran,Plumber(0)
Garry,Plumber(0)
Rakesh,Plumber(0)
Shekar,Plumber(0)
Balu,Electrician(0)
Ragunathan,Electrician(0)
Prem kumar,Electrician(0)
Saravanan,Electrician(0)
Thanigaivel,Electrician(0)
案例 2:未读消息计数
当有用户(在角色内)有未读聊天计数时,列表应优先考虑他们在列表中的优先级,字母顺序应视为次要。它通常应该如下所示。
Zeplin,Mechanic(20)
Pranav,Mechanic(10)
Aarav,Mechanic(0)
Dhruv,Mechanic(0)
Jason,Mechanic(0)
Garry,Plumber(5)
Rakesh,Plumber(5)
Amit,Plumber(0)
Baskaran,Plumber(0)
Shekar,Plumber(0)
Prem kumar,Electrician(10)
Balu,Electrician(0)
Ragunathan,Electrician(0)
Saravanan,Electrician(0)
Thanigaivel,Electrician(0)
请帮我完成这个。
以下是我尝试过的
fun getListWithGroupingAndSorting(){
val users = ArrayList<User>
// Writing logic to pull list of users from server and assigning to `users`
return ArrayList(users.sortedWith(compareByDescending<User> {
it.unreadMessageCount
}.thenBy {
it.firstName
}))
}
这主要根据未读消息数对列表进行排序,其次根据字母顺序但无法以上述方式完成。
【问题讨论】:
-
您可能必须先使用groupBy 来对它们进行分组。
-
@MartinMarconcini 如何完成?请帮帮我。首先它应该显示是否有机械师,然后是电工,然后是管道工。
标签: android sorting kotlin arraylist