これは少し奇妙かもしれません (これが私が Stack Overflow をチェックしている理由です) が、私がやっていることは、検索候補ポップアップでカスタム結果を返す検索ウィジェットを備えた Android アプリを作成することです (以下のスクリーンショットのように) )。
ツイストは、Web API から検索候補を返していることです。
query() メソッドで次のことを行うカスタム コンテンツ プロバイダーを作成しましたが、問題なく動作しますが、検索入力フィールドに各文字が入力された後に query() メソッドが呼び出されるという問題があります。たとえば、10 文字の検索語を入力すると、10 個の検索クエリが Web API に送信されます。
public Cursor query(final Uri uri,
final String[] projection,
final String selection,
final String[] selectionArgs,
final String sortOrder) {
// Query the web API here
final MatrixCursor cursor = new MatrixCursor( /* populate with columns */ );
// Add results from web API to cursor
return cursor;
}
アプリの iOS バージョンでこれを回避するために、0.7 秒後に実行されてから Web API 呼び出しを実行するタイマーを設定しました。このタイマーは、キーを押すたびにリセットされるため、結果が表示される前に、ユーザーは基本的に入力を少し一時停止する必要があります。
Android では query() メソッドが結果を同期的に返す必要がありますが、検索結果は非同期的に返されるため、iOS ではこれを行うことができます。
タイマーを設定できるAndroidで同様のことを行う方法はありますか、それともカスタム検索の提案に対してこれを間違った方法で行っていますか?