データベースを検索するアプリがあります。最後の10個の検索値を保存して(ユーザーがアプリを閉じてもそれらを保持したい)、AutoCompleteTextViewのアダプターとして使用します。
SharedPreferencesは配列または配列リストをサポートしていないようです。ここでの最善のアプローチは何ですか?
データベースを検索するアプリがあります。最後の10個の検索値を保存して(ユーザーがアプリを閉じてもそれらを保持したい)、AutoCompleteTextViewのアダプターとして使用します。
SharedPreferencesは配列または配列リストをサポートしていないようです。ここでの最善のアプローチは何ですか?
のテーブルを使用しSQLiteDatabase
て検索履歴を保存し、標準のSQLAPIを使用してアクセスできます。
または、XML、JSON、YAML、CSV、プレーンテキスト、または履歴を保持するために必要なものでファイルを使用できます。利点は、シンプルさと(多分)パフォーマンスです。欠点は、自分でシリアル化および逆シリアル化する必要があることです(考えられるバリエーションは、Javaオブジェクトを直接シリアル化することです)。
SharedPreferencesは、ブールint、float、long、およびStringをサポートします。
ただし、ArrayListはSerializableであるため、オブジェクトSerializableも宣言する場合は、ObjectOutputStreamを使用してそれらをByteBufferにエンコードし、このbyteBufferをStringに変換して、最後にSharedPreferencesに格納するか、バイナリファイル(bytebufferとして)に格納できます。 )。
Stringを保存するだけの場合は、配列のすべての要素を簡単に実行して「arrayName」+ indexとして保存し、最後に配列のサイズを保存する方が簡単です。