最近在项目中需要将读取的数据按照时间的降序进行排序。
开始使用model实现Comparable接口重写compareTo但是没有效果,果断放弃,只能自己写个排序算法,可以使用冒泡排序:
具体的步骤如下:
1.读取数据,存入List中
2.取出数据中的时间戳,由String转换成Date
3.使用冒泡排序对List中元素按照Date进行排序
项目的需求是排序本地mp3文件录音列表 按照文件创建的时间进行排序
直接获取文件的最后修改时间也就是文件创建完保存到本地的时间
//格式:Fri Sep 28 16:23:39 GMT+08:00 2018
recordingModel.voiceEndTimeTotal = Date(File(filePath).lastModified())
此处我直接写的自己的model和自定义的字段
排序算法具体代码如下:
//将List按照时间降序进行排列
private fun invertOrderList(L: ArrayList<RecordingModel>?): ArrayList<RecordingModel> {
var d1: Date;
var d2: Date;
var temp_r = RecordingModel();
//这是一个冒泡排序,将大的放在数组前面
for (i in 0 until L?.size!! - 1) {
for (j in i + 1 until L.size) {
d1 = L.get(i).voiceEndTimeTotal!!
d2 = L.get(j).voiceEndTimeTotal!!
if (d1.before(d2)) {//如果日期靠前,则换顺序
temp_r = L.get(i);
L[i] = L.get(j)
L[j] = temp_r
}
}
}
return L;
}
将返回的处理好的list重新传入到adapter的列表中就可以了。







网友评论