gpt4 book ai didi

android - 在 kotlin 中对自定义对象列表进行排序

转载 作者:行者123 更新时间:2023-12-05 00:18:38 26 4
gpt4 key购买 nike

interface Feed

class Memo : Feed {
var memoId: String? = null
var updateTime: String? = null
// other fileds
}

class Activity : Feed {
var activityId: String? = null
var updateTime: String? = null
// other fileds
}
如上面的代码,我创建了一个接口(interface)并在其他两个类中扩展它。
   var mainFeedList: ArrayList<Feed> = ArrayList()
var memoList: ArrayList<Memo> = ArrayList()
var ActivityList: ArrayList<Activity> = ArrayList()

fun arrangeFeedDataOrder() {

mainFeedList.addAll(memoList)
mainFeedList.addAll(ActivityList)

mainFeedList.sortedBy {
when (it) {
is Activity -> {
it.updateTime
}
is Memo -> {
it.updateTime
}
else -> {
null
}
}
}
// Not work above code for sorting
}
我有包含备忘录和 Activity 数据的主列表。我想用 对这个列表进行排序更新时间 提交。我用了 排序依据 功能,但在我的情况下不起作用。任何人都知道如何对列表进行排序?

最佳答案

你想要sortBy (对列表进行就地排序)而不是 sortedBy (返回一个排序的副本,你基本上是丢弃)
另外,为什么不放updateTime如果它是所有人共有的,请在界面中Feed年代?这样你就不需要做任何类型检查——你有一个列表 Feed s,他们有一个 updateTime , 所以你可以按 it.updateTime 排序所有这些:

interface Feed {
var updateTime: String?
}

class Memo : Feed {
var memoId: String? = null
override var updateTime: String? = null
}

class Activity : Feed {
var activityId: String? = null
override var updateTime: String? = null
}

...

mainFeedList.sortBy { it.updateTime } // or sortBy(Feed::updateTime)
或者如果你有这些类的父类(super class),你可以在其中定义属性,默认为 null值(不能在接口(interface)中这样做,这就是为什么你需要 override 并在每个实现它的类中提供一个值)

关于android - 在 kotlin 中对自定义对象列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67127746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com