我有一个在数据库中搜索的应用程序。我想存储最后10个搜索值(我希望即使用户关闭应用程序,它们也会保留下来),以便将它们用作AutoCompleteTextView中的适配器。
SharedPreferences似乎不支持数组或数组列表。这里最好的方法是什么?
发布于 2012-10-25 22:32:40
您可以在SQLiteDatabase中使用一个表来存储搜索历史,并使用标准的SQL来访问它。
也可以使用XML、JSON、YAML、CSV、纯文本或任何您喜欢的格式的file来保存历史。它的优点是简单性和(也许)性能。缺点是您必须自己序列化和反序列化(一种可能的变体是直接序列化Java对象)。
发布于 2012-10-25 22:30:11
SharedPreferences支持布尔型整数、浮点数、长整型和字符串。
但是ArrayList是可序列化的,所以如果你也声明你的对象是可序列化的,你可以用ObjectOutputStream把它们编码成一个ByteBuffer,然后把这个byteBuffer转换成一个字符串,最后把它存储到一个SharedPreferences中,或者更好地存储到一个二进制文件(如bytebuffer)中。
在你的例子中,你只需要保存字符串,它更容易遍历数组的每个元素,并将它们保存为“arrayName”+索引,最后保存数组的大小。
https://stackoverflow.com/questions/13070617
复制相似问题