SortBy 在 Kotlin 中降序不按日期工作

SortBy descending in Kotlin is not working by date

我正在从后端 - Room 数据库获取图片对象,我想在 RecyclerView 中按日期对它们进行排序 - 最近的在最上面。我正在使用 kotlin 列表函数,但 ASC 和 DESC 排序的结果相同。为什么?

这是我的代码:

private fun inflateRecyclerView(pictureList: List<FavouritePictureModel>) {
        val list = pictureList.map { picture ->
            picture.id.let {
                id
                FavouritePicturesItem(
                    id = id,
                    copyright = picture.copyright,
                    date = dateStringToDate(picture.date),
                    explanation = picture.explanation,
                    title = picture.title,
                    url = picture.url,
                    bitmap = picture.bitmap,
                )
            }
        }
        list.sortedBy { it.date }
        Timber.d("Sorted ASC: $list")
        list.sortedByDescending{ it.date }
        Timber.d("Sorted DESC: $list")
        
        adapter.submitList(list)
    }

@SuppressLint("SimpleDateFormat")
private fun dateStringToDate(date: String): Date {
    return SimpleDateFormat("yyyy-MM-dd").parse(date)
}

sortedBy 不会对列表本身进行排序,而是 returns 一个新的排序列表。所以你需要将结果保存到旧列表中,比如

list = list.sortedBy { it.date }

不过,您需要将其设为 var。或者直接将排序后的列表传递给 submitList like

adapter.submitList(list.sortedBy { it.date })