如何在Kotlin Android中用Gson将MutableList存入SharedPreferences(无需实体类)
1. 添加Gson依赖
在app模块的build.gradle或build.gradle.kts中引入Gson:
// Groovy语法 dependencies { implementation 'com.google.code.gson:gson:2.10.1' } // Kotlin DSL语法 dependencies { implementation("com.google.code.gson:gson:2.10.1") }
2. 封装保存与读取方法
直接基于SharedPreferences和Gson实现,无需实体类:
保存字符串列表
private fun saveUsedCodesList(list: MutableList<String>) { val sharedPref = getSharedPreferences("MyPrefs", MODE_PRIVATE) val editor = sharedPref.edit() val json = Gson().toJson(list) editor.putString("used_codes_key", json) editor.apply() }
读取字符串列表
private fun loadUsedCodesList(): MutableList<String> { val sharedPref = getSharedPreferences("MyPrefs", MODE_PRIVATE) val json = sharedPref.getString("used_codes_key", null) ?: return mutableListOf("022", "027") val type = object : TypeToken<MutableList<String>>() {}.type return Gson().fromJson(json, type) }
3. 日常使用示例
// 初始化列表:启动时从SharedPreferences加载 private var usedCodesList = loadUsedCodesList() // 添加元素后自动保存 fun addNewCode(code: String) { usedCodesList.add(code) saveUsedCodesList(usedCodesList) } // 清空列表后自动保存 fun clearAllCodes() { usedCodesList.clear() saveUsedCodesList(usedCodesList) }
注意事项
MyPrefs是自定义的偏好文件名,可根据需求修改used_codes_key是存储列表的键名,确保保存和读取时一致apply()是异步保存操作,不会阻塞主线程;若需同步保存可改用commit()(不推荐在主线程频繁调用)
内容的提问来源于stack exchange,提问作者MautendoSkill
相关产品推荐
相关产品推荐

