📜  如何将ArrayList保存到Android中的SharedPreferences?(1)

📅  最后修改于: 2023-12-03 15:24:43.903000             🧑  作者: Mango

如何将ArrayList保存到 Android 中的 SharedPreferences?

在开发 Android 应用程序时,经常需要将数据保存到本地存储中。SharedPreferences 是 Android 提供的一种轻量级的存储方式,可以用于保存键值对的数据。本文将介绍如何将 ArrayList 类型的数据保存到 SharedPreferences 中。

1. 获取 SharedPreferences 实例

在项目中,我们可以通过以下方式获取 SharedPreferences 实例:

SharedPreferences preferences = context.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);

其中,context 表示当前上下文,可以是 Activity、Service 等组件。"MyPrefs" 表示 SharedPreferences 的名称,可以自定义。常用的 MODE_PRIVATE 表示仅当前应用可以访问该 SharedPreferences。

2. 将 ArrayList 序列化为 String

首先,我们需要将 ArrayList 类型的数据序列化为 String,以便保存到 SharedPreferences 中。

ArrayList<String> list = new ArrayList<>();
list.add("item1");
list.add("item2");
list.add("item3");
String serializedList = new Gson().toJson(list);

以上代码即将 ArrayList 类型的数据序列化为一个 String 类型的 JSON 字符串。在这里,我们使用了 Google 的 Gson 库,可以通过 Gradle 添加依赖:

dependencies {
    implementation 'com.google.code.gson:gson:2.8.6'
}
3. 将序列化后的数据保存到 SharedPreferences 中

接下来,我们需要将序列化后的数据保存到 SharedPreferences 中。

SharedPreferences.Editor editor = preferences.edit();
editor.putString("list_key", serializedList);
editor.apply();

其中,"list_key" 是保存数据的键,可以自定义。editor.apply() 表示异步保存数据,editor.commit() 则表示同步保存数据。

4. 从 SharedPreferences 中获取保存的数据并反序列化

最后,我们来看一下如何从 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 中的方法。我们可以将其封装成工具类,以便在项目中复用。