2012-10-25 99 views
1

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

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

+1

你可以很容易地用JSON对它们进行编码并将它们保存在一个SharedPreference中 – PKeidel

+0

由于API 11有一种方法叫做putStringSet(String key,Set values) – PKeidel

+0

是的,但我的应用程序支持API 7. – razielsarafan

回答

1

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

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

0

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

但是ArrayList是可序列化的,所以如果你还声明了你的对象Serializable,你可以用ObjectOutputStream将它们编码成一个ByteBuffer,然后将这个byteBuffer转换成一个String,最后将它存储到SharedPreferences中,或者更好地存储到一个二进制文件(作为字节缓冲区)。

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