ユーザーの検索履歴を保存するアプリがあります。カスタム提案も追加しています。これには、もう 1 つのメソッドを追加して、クラスquery()
でオーバーライドする必要がありました。MyCustomSuggestionProvider
ただし、これを行うと、最近の提案が表示されなくなります。それらはまだSuggestions.dbに保存されています。テストするメソッドを削除した瞬間query()
、最近の提案が戻ってきます。
これら2つのことを連携させる方法を知っている人はいますか?
問題は query() をオーバーライドすることではなく、それを処理する方法でした。これが私の解決策です:
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
Cursor recentCursor = super.query(uri, projection, selection,
selectionArgs, sortOrder);
query = selectionArgs[0];
if (query == null || query.length() < 3) {
return recentCursor;
} else {
query = selectionArgs[0];
MatrixCursor customCursor = new MatrixCursor(COLUMN_NAMES);
SearchSuggestionObject[] suggestions = getSuggestionsFromWebFeed(query);
for (SearchSuggestionObject suggestion : suggestions) {
customCursor.addRow(new Object[] { suggestion.getId(),
suggestion.getItem(), suggestion.getCat(),
suggestion.getItem(), suggestion.getItem(),
suggestion.getCat(), "android.intent.action.SEARCH" });
}
return customCursor;
}
}