我有一個在數據庫中搜索的應用程序。我想存儲最後10個搜索值(並且我希望它們保留即使用戶關閉應用程序),以將它們用作AutoCompleteTextView中的適配器。Android商店最近10個搜索值
SharedPreferences似乎不支持數組或ArrayList。這裏最好的方法是什麼?
我有一個在數據庫中搜索的應用程序。我想存儲最後10個搜索值(並且我希望它們保留即使用戶關閉應用程序),以將它們用作AutoCompleteTextView中的適配器。Android商店最近10個搜索值
SharedPreferences似乎不支持數組或ArrayList。這裏最好的方法是什麼?
您可以使用SQLiteDatabase
中的表來存儲搜索歷史記錄,並使用標準SQL API來訪問它。
或者您可以使用XML,JSON,YAML,CSV,純文本或任何您喜歡的任何東西來持久保存歷史記錄的file。優點是簡單性和(可能)性能。缺點是你必須自己序列化和反序列化(可能的變化是直接序列化一個Java對象)
SharedPreferences支持boolean int,float,long和String。
但是ArrayList是可序列化的,所以如果你還聲明瞭你的對象Serializable,你可以用ObjectOutputStream將它們編碼成一個ByteBuffer,然後將這個byteBuffer轉換成一個String,最後將它存儲到SharedPreferences中,或者更好地存儲到一個二進制文件(作爲字節緩衝區)。
在你的情況下,你只需要保存字符串,它更容易運行通過數組的每個元素,並將它們保存爲「arrayName」+索引,最後保存數組的大小。
你可以很容易地用JSON對它們進行編碼並將它們保存在一個SharedPreference中 – PKeidel
由於API 11有一種方法叫做putStringSet(String key,Set values) –
PKeidel
是的,但我的應用程序支持API 7. – razielsarafan