1

我有一个在数据库中搜索的应用程序。我想存储最后 10 个搜索值(即使用户关闭应用程序,我希望它们保留)以将它们用作 AutoCompleteTextView 中的适配器。

SharedPreferences 似乎不支持数组或数组列表。这里最好的方法是什么?

4

2 回答 2

1

您可以使用 a 中的表SQLiteDatabase来存储搜索历史记录,并使用标准 SQL API 来访问它。

或者,您可以使用XML、JSON、YAML、CSV、纯文本或任何您喜欢的文件来保存历史记录。优点是简单和(也许)性能。缺点是您必须自己序列化和反序列化(一种可能的变体是直接序列化 Java 对象)

于 2012-10-25T14:32:39.647 回答
0

SharedPreferences 支持 boolean int、float、long 和 String。

但是 ArrayList 是可序列化的,因此如果您还声明对象可序列化,则可以使用 ObjectOutputStream 将它们编码为 ByteBuffer,然后将此 byteBuffer 转换为字符串,最后将其存储到 SharedPreferences 中,或者更好地存储到二进制文件(作为 bytebuffer )。

在你的情况下,你只需要保存字符串,它更容易遍历数组的每个元素并将它们保存为“arrayName”+index,最后保存数组的大小。

于 2012-10-25T14:30:10.760 回答