これまでに検索ビューに入力したクエリに基づいてカスタム提案を提供するコンテンツプロバイダを作成する必要があります。 searchable.xmlには、検索式の最小長を設定します。これには、提案を求める前に到達する必要があります。このコンテンツプロバイダは、提案プロバイダ(ContentProviderを拡張しています)と呼ばれます。コンテンツプロバイダの権限もsearchable.xmlで設定されます。
提案プロバイダが提案をどのように計算するかに制限はありません。 Webクエリーをデータベースで検索したり、ファイルを読み取ったりすることができます。しかし、クエリの答えはテーブルの形式です。提案がデータベースから直接照会された場合は、データベースクエリによってカーソルが応答され、結果がコンテンツプロバイダのquery()メソッドに渡されます。結果が1つ以上のソースから計算される場合は、MatrixCursorを使用してその場でテーブルを作成することができます。
提案プロバイダからの回答の行は、検索メカニズムによって提案を表示するために使用され、テーブルに格納されます。次のように行の形式は次のとおりです。
private static final String[] COLUMNS = {
"_id",
SearchManager.SUGGEST_COLUMN_ICON_1, // ID of a drawable (icon) as String
SearchManager.SUGGEST_COLUMN_TEXT_1, // main text for suggestion display
SearchManager.SUGGEST_COLUMN_TEXT_2, // secondary text for suggestion display
SearchManager.SUGGEST_COLUMN_INTENT_DATA, // this could be an URI to access the suggestion as used in an intent with a VIEW action
SearchManager.SUGGEST_COLUMN_INTENT_ACTION, // this could be Intent.ACTION_VIEW
SearchManager.SUGGEST_COLUMN_SHORTCUT_ID // e.g. SearchManager.SUGGEST_NEVER_MAKE_SHORTCUT
};
検索はここでより詳細に説明されていますhttp://developer.android.com/guide/topics/search/index.html
OK ...私は私が理解し始めていますね。しかし、いつどこで提案がテーブルに挿入され、どのフォーマットがどのようなフォーマットになっていますか?それは私が混乱していることです。私は、この種の「オートコンプリート」/提案機能はTrieなどを使って実装されると考えています... –
つまり提案表はどのように見えますか?必ずしも人間が読めるとは限りません。このテーブルはいつ作成されますか( 'execSQL'を使って作成する必要がありますか?) –
データベースの特定の列に対して単純な「オートコンプリート/示唆完全」検索機能を使用したいと考えていますが、データベース全体を変更して多数のファイルを混乱させるということは、 (私はまだこのことは実装するのに時間がかかりませんが、私の望むのは、システムがデータベース内の文字列の1つの列に対して自動的に完了することです)。 –