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或文件存储,可以方便地在应用重新打开后重新加载数据。