0

ユーザーの検索履歴を保存するアプリがあります。カスタム提案も追加しています。これには、もう 1 つのメソッドを追加して、クラスquery()でオーバーライドする必要がありました。MyCustomSuggestionProvider

ただし、これを行うと、最近の提案が表示されなくなります。それらはまだSuggestions.dbに保存されています。テストするメソッドを削除した瞬間query()、最近の提案が戻ってきます。

これら2つのことを連携させる方法を知っている人はいますか?

4

1 に答える 1

0

問題は 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;
    }
}
于 2013-04-10T18:39:23.257 に答える