我有一个在数据库中搜索的应用程序。我想存储最后 10 个搜索值(即使用户关闭应用程序,我希望它们保留)以将它们用作 AutoCompleteTextView 中的适配器。
SharedPreferences 似乎不支持数组或数组列表。这里最好的方法是什么?
我有一个在数据库中搜索的应用程序。我想存储最后 10 个搜索值(即使用户关闭应用程序,我希望它们保留)以将它们用作 AutoCompleteTextView 中的适配器。
SharedPreferences 似乎不支持数组或数组列表。这里最好的方法是什么?
您可以使用 a 中的表SQLiteDatabase
来存储搜索历史记录,并使用标准 SQL API 来访问它。
或者,您可以使用XML、JSON、YAML、CSV、纯文本或任何您喜欢的文件来保存历史记录。优点是简单和(也许)性能。缺点是您必须自己序列化和反序列化(一种可能的变体是直接序列化 Java 对象)
SharedPreferences 支持 boolean int、float、long 和 String。
但是 ArrayList 是可序列化的,因此如果您还声明对象可序列化,则可以使用 ObjectOutputStream 将它们编码为 ByteBuffer,然后将此 byteBuffer 转换为字符串,最后将其存储到 SharedPreferences 中,或者更好地存储到二进制文件(作为 bytebuffer )。
在你的情况下,你只需要保存字符串,它更容易遍历数组的每个元素并将它们保存为“arrayName”+index,最后保存数组的大小。