Android ArrayList 存本地

在Android开发中,我们经常需要将数据存储在本地,以便在应用关闭后可以重新加载。其中,ArrayList是一种常用的数据结构,它可以动态地存储多个对象。本文将介绍如何使用ArrayList将数据存储在本地,并在应用重新打开后重新加载。

SharedPreferences

SharedPreferences是Android中的一种轻量级存储方式,它可以用来存储简单的键值对数据。我们可以使用SharedPreferences来存储ArrayList。

首先,需要获取SharedPreferences对象:

SharedPreferences sharedPreferences = context.getSharedPreferences("MyPreferences", Context.MODE_PRIVATE);

接下来,我们可以使用SharedPreferences.Editor来进行存储操作:

SharedPreferences.Editor editor = sharedPreferences.edit();

然后,我们可以使用putStringSet方法将ArrayList转换为Set并存储在SharedPreferences中:

Set<String> stringSet = new HashSet<>(arrayList);
editor.putStringSet("MyArrayList", stringSet);
editor.apply();

在重新加载数据时,我们可以使用getStringSet方法获取存储在SharedPreferences中的Set,并将其转换为ArrayList:

Set<String> stringSet = sharedPreferences.getStringSet("MyArrayList", new HashSet<>());
ArrayList<String> arrayList = new ArrayList<>(stringSet);

文件存储

除了SharedPreferences,我们还可以使用文件存储的方式来存储ArrayList。文件存储可以存储任意类型的数据,包括ArrayList。

首先,我们需要创建一个文件来存储ArrayList:

File file = new File(context.getFilesDir(), "MyArrayList.txt");

然后,我们可以使用ObjectOutputStream将ArrayList写入文件:

try {
    FileOutputStream fileOutputStream = new FileOutputStream(file);
    ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
    objectOutputStream.writeObject(arrayList);
    objectOutputStream.close();
} catch (IOException e) {
    e.printStackTrace();
}

在重新加载数据时,我们可以使用ObjectInputStream从文件中读取ArrayList:

try {
    FileInputStream fileInputStream = new FileInputStream(file);
    ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
    arrayList = (ArrayList<String>) objectInputStream.readObject();
    objectInputStream.close();
} catch (IOException | ClassNotFoundException e) {
    e.printStackTrace();
}

总结

本文介绍了两种常用的方法来将ArrayList存储在本地。SharedPreferences适合存储简单的键值对数据,而文件存储适合存储任意类型的数据。根据实际需求,我们可以选择合适的方法来进行数据存储。

希望本文对你理解如何使用ArrayList存储数据在本地有所帮助。使用SharedPreferences或文件存储,可以方便地在应用重新打开后重新加载数据。