【发布时间】:2012-12-03 18:40:31
【问题描述】:
我有一个 ArrayList of Persons (ArrayList<Person>),我想将该 ArrayList 存储在持久数据类型中。 SharedPreferences 是一种解决方案,但它只是在操作 String、int、float`... 变量。你有什么想法吗?
非常感谢。
【问题讨论】:
标签: android arraylist sharedpreferences
我有一个 ArrayList of Persons (ArrayList<Person>),我想将该 ArrayList 存储在持久数据类型中。 SharedPreferences 是一种解决方案,但它只是在操作 String、int、float`... 变量。你有什么想法吗?
非常感谢。
【问题讨论】:
标签: android arraylist sharedpreferences
更简单的是使用java Serialisation。
你只需要一个 Persons 类:
public class Persons {
ArrayList<Person> personList;
}
然后简单地使用
// init Persons
Persons person = new Persons();
// add some
persons.personList.add(new Person());
// write out
ObjectOutpuStream oos = new ObjectOutputStream(new BufferOutputStream(new FileOutputStream("personsDB.ser")));
oos.writeObject(persons);
oos.close();
回读
ObjectInputStream ois = new ObjectInputStream(new BufferedInpuStream(new FileInpuStream("personsDB.ser")));
persons = (Persons) ois.readObject();
ois.close();
// ready! Java does that all for you; since Persons is one object which contains something
缺点是在写入过程中会丢失电池电量。有些人先写入一个临时文件,删除旧的并重命名为正确的文件名。
为了高性能(更少的空间,更快)
您可以使用DataOutputStream,但您必须自己编写所有字段(但这也很简单)
【讨论】:
我会将数组中的每个 Person 存储为 SQLite 数据库中的一行。当您想将其读回程序中时,每一行都成为数组中的一个Person 对象。
【讨论】:
您必须使用数据库或将 json 响应写入文件并从文件中读取它
【讨论】: