Android 使用 SharedPreferences 存储 List 集合
Android 开发中,数据存储是一项不可避免的任务。对于小型数据的存储,Android 提供了多种方式,其中 SharedPreferences 是一个常用的方法。虽然 SharedPreferences 通常用于存储简单的数据类型,但我们可以通过一些技巧来存储集合,比如 List。本文将介绍如何使用 SharedPreferences 存储和读取 List 集合。
什么是 SharedPreferences?
SharedPreferences 是 Android 中提供的一种轻量级的数据存储方式。它允许你以键值对的形式存储小型数据,这些数据会保存在设备的内存中。使用 SharedPreferences,你可以方便地存储用户的配置信息或应用程序的状态。
为什么要存储 List?
在许多应用场景中,我们需要存储多个相关的数据项,如用户的购物车、收藏夹等。虽然 SharedPreferences 不直接支持存储 List,但是我们可以将 List 转换为 String 存储。
代码示例
步骤 1: 依赖库
首先,确保你在项目中包含必要的依赖项。在 build.gradle 文件中,确认你的 Android 版本支持。
android {
...
compileSdkVersion 30
...
}
步骤 2: 存储 List
我们将创建一个简单的方法来将 List 存储到 SharedPreferences 中。为了实现这一目标,我们首先需要将 List 转换为 String。最常用的方法是使用 Gson 库进行序列化和反序列化。
首先,添加 Gson 依赖:
implementation 'com.google.code.gson:gson:2.8.6'
然后,可以使用下面的代码来存储 List:
import android.content.Context;
import android.content.SharedPreferences;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Set;
public class SharedPreferencesUtil {
private static final String PREFS_NAME = "MyPrefs";
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editor;
private Gson gson;
public SharedPreferencesUtil(Context context) {
sharedPreferences = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
editor = sharedPreferences.edit();
gson = new Gson();
}
public void saveList(String key, ArrayList<String> list) {
String json = gson.toJson(list); // 将 List 转换为 JSON 字符串
editor.putString(key, json);
editor.apply(); // 应用更改
}
}
步骤 3: 读取 List
接下来,我们来创建一个方法,用于从 SharedPreferences 中读取 List。
public ArrayList<String> getList(String key) {
String json = sharedPreferences.getString(key, null);
Type type = new TypeToken<ArrayList<String>>() {}.getType(); // 获取 List 类型
return gson.fromJson(json, type); // 将 JSON 字符串转换回 List
}
步骤 4: 使用示例
现在让我们看看如何使用这个工具类来存储和读取 List。
public class MainActivity extends AppCompatActivity {
private SharedPreferencesUtil sharedPreferencesUtil;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sharedPreferencesUtil = new SharedPreferencesUtil(this);
ArrayList<String> travelDestinations = new ArrayList<>();
travelDestinations.add("Paris");
travelDestinations.add("Tokyo");
travelDestinations.add("New York");
// 存储 List
sharedPreferencesUtil.saveList("Destinations", travelDestinations);
// 读取 List
ArrayList<String> retrievedList = sharedPreferencesUtil.getList("Destinations");
for (String destination : retrievedList) {
Log.d("TAG", "Destination: " + destination);
}
}
}
代码解析
- 存储 List:我们使用
Gson的toJson方法将ArrayList转换为JSON格式字符串,并将其存储在SharedPreferences中。 - 读取 List:我们使用
fromJson方法将存储的JSON字符串转换回ArrayList。 - 确保线程安全:使用
apply()方法异步保存数据,避免在主线程中执行耗时操作。
旅行图
在这里,我们将利用 mermaid 语法展示一个简单的旅行图,阐释不同的目的地。
journey
title A Journey to World Cities
section Paris
Visit Eiffel Tower: 5: Paris
Tour the Louvre: 4: Paris
section Tokyo
Explore Shibuya: 4: Tokyo
Visit Mount Fuji: 5: Tokyo
section New York
See Times Square: 5: New York
Visit Statue of Liberty: 5: New York
小结
在本文中,我们通过一个简单的 SharedPreferencesUtil 工具类,详细讲解了如何在 Android 中使用 SharedPreferences 存储和读取 List 集合。使用 Gson 库,我们简单地将 List 转换为 JSON 字符串,以便进行存储和读取。这种方式适用于需要保存小型集合数据的场景。
通过本文,你应该能够在你的应用程序中轻松实现 List 的存储与读取,为用户提供更好的使用体验。希望你能在实际开发中运用这些知识,提升你的Android开发技能!
















