Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在kotlin中对自定义对象列表进行排序_Android_Sorting_Kotlin_Arraylist - Fatal编程技术网

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

Android 在kotlin中对自定义对象列表进行排序,android,sorting,kotlin,arraylist,Android,Sorting,Kotlin,Arraylist,正如上面的代码一样,我创建了一个接口,并在其他两个类中对其进行了扩展 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? = nu

正如上面的代码一样,我创建了一个接口,并在其他两个类中对其进行了扩展

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
}
var mainFeedList:ArrayList=ArrayList()
var memoList:ArrayList=ArrayList()
变量ActivityList:ArrayList=ArrayList()
fun arrangeFeedDataOrder(){
mainFeedList.addAll(备忘录列表)
mainFeedList.addAll(活动列表)
mainFeedList.sortedBy{
什么时候{
是活动->{
更新时间
}
是备忘录->{
更新时间
}
其他->{
无效的
}
}
}
//不能在排序代码以上工作
}

我有包含备忘录和活动数据的主列表。我想用updateTime字段对该列表进行排序。我使用了sortedBy函数,但它在我的情况下不起作用。有人知道如何对列表进行排序吗?

您希望通过
排序(对列表进行适当排序),而不是通过
排序(返回排序后的副本,您基本上会丢弃该副本)

另外,如果所有的
Feed
s都有
updateTime
,为什么不把它放在界面中呢?这样,您就不需要进行任何类型检查-您有一个
Feed
s的列表,它们有一个
updateTime
,因此您只需按
it排序即可。updateTime
对所有它们进行排序:

   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
    }

或者,如果这些类有一个超类,您可以在其中使用默认的
null
值定义属性(在接口中不能这样做,这就是为什么您需要
覆盖
并在实现它的每个类中提供一个值)

为什么
sortedBy
不适合您?实际上,您没有将结果分配给代码中的任何内容,它不是就地排序。您不能按可空值进行排序。@Tenfour04您可以吗?空值在列表中排名第一-哇,我从来没有意识到。永远不要妄想。科特林正在做很好的工作来修复这个卑微的空人!
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)