📅  最后修改于: 2023-12-03 15:24:43.903000             🧑  作者: Mango
在开发 Android 应用程序时,经常需要将数据保存到本地存储中。SharedPreferences 是 Android 提供的一种轻量级的存储方式,可以用于保存键值对的数据。本文将介绍如何将 ArrayList 类型的数据保存到 SharedPreferences 中。
在项目中,我们可以通过以下方式获取 SharedPreferences 实例:
SharedPreferences preferences = context.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
其中,context
表示当前上下文,可以是 Activity、Service 等组件。"MyPrefs"
表示 SharedPreferences 的名称,可以自定义。常用的 MODE_PRIVATE 表示仅当前应用可以访问该 SharedPreferences。
首先,我们需要将 ArrayList 类型的数据序列化为 String,以便保存到 SharedPreferences 中。
ArrayList<String> list = new ArrayList<>();
list.add("item1");
list.add("item2");
list.add("item3");
String serializedList = new Gson().toJson(list);
以上代码即将 ArrayList
dependencies {
implementation 'com.google.code.gson:gson:2.8.6'
}
接下来,我们需要将序列化后的数据保存到 SharedPreferences 中。
SharedPreferences.Editor editor = preferences.edit();
editor.putString("list_key", serializedList);
editor.apply();
其中,"list_key"
是保存数据的键,可以自定义。editor.apply()
表示异步保存数据,editor.commit()
则表示同步保存数据。
最后,我们来看一下如何从 SharedPreferences 中获取保存的数据并反序列化为 ArrayList 类型。
String savedList = preferences.getString("list_key", "");
ArrayList<String> restoredList = new Gson().fromJson(savedList, new TypeToken<ArrayList<String>>() {}.getType());
preferences.getString("list_key", "")
表示从 SharedPreferences 中获取键为 "list_key"
的字符串类型数据。如果获取不到,则返回默认值 ""
。
new TypeToken<ArrayList<String>>() {}.getType()
表示获取 ArrayList 类型的 Type 对象,以便进行反序列化。通过这种方式可以避免类型擦除问题。
以上即为将 ArrayList 类型的数据保存到 SharedPreferences 中的方法。我们可以将其封装成工具类,以便在项目中复用。