android使用kotlin按日期遍历相册按日期分组保存到list集合
时间: 2023-12-13 18:04:46 浏览: 95
以下是按日期遍历相册并按日期分组保存到 List 集合的示例代码:
```kotlin
data class Image(val id: Long, val dateTaken: Long, val path: String)
fun getImagesByDate(context: Context): List<List<Image>> {
val images = mutableListOf<Image>()
val projection = arrayOf(
MediaStore.Images.Media._ID,
MediaStore.Images.Media.DATE_TAKEN,
MediaStore.Images.Media.DATA
)
val sortOrder = MediaStore.Images.Media.DATE_TAKEN + " DESC"
val cursor = context.contentResolver.query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection,
null,
null,
sortOrder
)
if (cursor != null) {
val idColumn = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID)
val dateTakenColumn = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATE_TAKEN)
val pathColumn = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault())
var currentDate = ""
var currentList = mutableListOf<Image>()
while (cursor.moveToNext()) {
val id = cursor.getLong(idColumn)
val dateTaken = cursor.getLong(dateTakenColumn)
val path = cursor.getString(pathColumn)
val date = dateFormat.format(Date(dateTaken))
if (date != currentDate) {
if (currentList.isNotEmpty()) {
images.add(currentList)
}
currentList = mutableListOf()
currentDate = date
}
currentList.add(Image(id, dateTaken, path))
}
if (currentList.isNotEmpty()) {
images.add(currentList)
}
cursor.close()
}
return images
}
```
该函数返回一个 `List<List<Image>>` 类型的对象,其中每个内部 List 表示同一日期的图片列表。注意,上述代码使用了 `data class` 来定义 `Image` 类型,方便之后的比较和操作,同时使用了 `SimpleDateFormat` 来格式化日期。
阅读全文