Android 使用SharePreferences保存List集合到本地

保存的基本思路是将List数据转换成json格式数据,再保存

//首先引入gson库
compile 'com.google.code.gson:gson:2.8.1'

保存List集合

List<String> list = new ArrayList<String>();
Gson gson = new Gson();
String data = gson.toJson(list);
sp.putString("listStr", data);

解析获取List集合

String data = sp.getString("listStr", "");
Gson gson = new Gson();
Type listType = new TypeToken<List<String>>() {
                    }.getType();
List<String> list = gson.fromJson(data, listType);

注:保存List<Object>类似,只需把List<String>换成List<Object>,即可方便存储集合到本地


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是按日期遍历相册并按日期分组保存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` 来格式化日期。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值