按kotlin的特定顺序对项目列表进行排序

按kotlin的特定顺序对项目列表进行排序,kotlin,Kotlin,我如何按状态订购ProductIntranet列表?我需要列表来显示以下订单待处理、未清理、已更换和已处理的产品,以便在recyclerview中显示它们的排序 val itemsSorted: List<ProductInCart> = products.sortedBy { ... } 您可以为以下各项分配优先级: 枚举类ProductInventStatusVal值:字符串,val优先级:Int{ @序列化名称待定 待决待决,1, @连载 TAKENtaken,2岁, @美国

我如何按状态订购ProductIntranet列表?我需要列表来显示以下订单待处理、未清理、已更换和已处理的产品,以便在recyclerview中显示它们的排序

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,如果你喜欢我