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