按kotlin的特定顺序对项目列表进行排序
我如何按状态订购ProductIntranet列表?我需要列表来显示以下订单待处理、未清理、已更换和已处理的产品,以便在recyclerview中显示它们的排序按kotlin的特定顺序对项目列表进行排序,kotlin,Kotlin,我如何按状态订购ProductIntranet列表?我需要列表来显示以下订单待处理、未清理、已更换和已处理的产品,以便在recyclerview中显示它们的排序 val itemsSorted: List<ProductInCart> = products.sortedBy { ... } 您可以为以下各项分配优先级: 枚举类ProductInventStatusVal值:字符串,val优先级:Int{ @序列化名称待定 待决待决,1, @连载 TAKENtaken,2岁, @美国
val itemsSorted: List<ProductInCart> = products.sortedBy { ... }
您可以为以下各项分配优先级: 枚举类ProductInventStatusVal值:字符串,val优先级:Int{ @序列化名称待定 待决待决,1, @连载 TAKENtaken,2岁, @美国 UNTAKEN UNTAKEN,3, @序列化名称已被替换 替换替换,4; 伴星{ val默认值:PRODUCTINVONTSTATUS=PENDING } } 然后,您可以按优先级对它们进行排序: val itemsorted:List=products.sorted,带有{it.\u status?.priority}
您可以为以下各项分配优先级: 枚举类ProductInventStatusVal值:字符串,val优先级:Int{ @序列化名称待定 待决待决,1, @连载 TAKENtaken,2岁, @美国 UNTAKEN UNTAKEN,3, @序列化名称已被替换 替换替换,4; 伴星{ val默认值:PRODUCTINVONTSTATUS=PENDING } } 然后,您可以按优先级对它们进行排序: val itemsorted:List=products.sorted,带有{it.\u status?.priority}
向枚举类中添加一个字段,该字段表示要获取的顺序
enum class ProductInCartStatus(val value: String, val order: Int) {
@SerializedName("pending")
PENDING("pending", 1),
@SerializedName("taken")
TAKEN("taken", 4),
@SerializedName("untaken")
UNTAKEN("untaken", 2),
@SerializedName("replaced")
REPLACED("replaced", 3);
companion object {
val DEFAULT: ProductInCartStatus = PENDING
}
}
然后用
val itemsSorted: List<ProductInCart> = products.sortedBy { it._status.order }
向枚举类中添加一个字段,该字段表示要获取的顺序
enum class ProductInCartStatus(val value: String, val order: Int) {
@SerializedName("pending")
PENDING("pending", 1),
@SerializedName("taken")
TAKEN("taken", 4),
@SerializedName("untaken")
UNTAKEN("untaken", 2),
@SerializedName("replaced")
REPLACED("replaced", 3);
companion object {
val DEFAULT: ProductInCartStatus = PENDING
}
}
然后用
val itemsSorted: List<ProductInCart> = products.sortedBy { it._status.order }
一般的方法是在类中实现,或者创建一个更适合您的if。但是,由于您使用的是枚举,如果您愿意重新排列顺序,而其他任何事情都不依赖于当前的序号,那么您只需执行以下操作即可
products.sortedBy { it.ordinal }
或者,如果您想就地修改列表
如果您不能修改代码,您可以创建自己的有序列表作为查找,如
val productOrder = listOf(PENDING, UNTAKEN, REPLACED, TAKEN)
products.sortedBy { productOrder.indexOf(it) }
或者sortedByproductOrder::indexOf,如果您喜欢“我是”,通常的方法是在类中实现,或者创建一个更适合您的if。但是,由于您使用的是枚举,如果您愿意重新排列顺序,而其他任何事情都不依赖于当前的序号,那么您只需执行以下操作即可
products.sortedBy { it.ordinal }
或者,如果您想就地修改列表
如果您不能修改代码,您可以创建自己的有序列表作为查找,如
val productOrder = listOf(PENDING, UNTAKEN, REPLACED, TAKEN)
products.sortedBy { productOrder.indexOf(it) }
或者sortedByproductOrder::indexOf,如果你喜欢我