1

アプリケーションにカスタム検索候補を実装しています。カスタム提案の追加に関する開発者向けドキュメントを見つけました。 http://developer.android.com/guide/topics/search/adding-custom-suggestions.html

これまでのところ、このような searchable.xml を作成しました。

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_label"
    android:hint="@string/search_hint"
    android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider">
</searchable>

そして、私は現在 MyCustomSuggestionProvider を実装していますが、提案テーブルを作成するのは難しいと思います。ドキュメントに記載されているように、実際にテーブルを構築せずに、MatrixCursor を使用して提案テーブルを構築する方法は? わかりやすいようにコードを書いてください。

4

1 に答える 1

2

SQLiteQueryBuilder と ProjectionMap を使用して同じ結果を得ることができます。参照用のコード スニペットを次に示します。

private static final HashMap<String, String> PROJECTION_MAP = new HashMap<String, String>();
static {
    PROJECTION_MAP.put("_id", Symbol.COL_ID);
    PROJECTION_MAP.put(SearchManager.SUGGEST_COLUMN_TEXT_1, "col1 AS " + SearchManager.SUGGEST_COLUMN_TEXT_1);
    PROJECTION_MAP.put(SearchManager.SUGGEST_COLUMN_TEXT_2, "col2 AS " + SearchManager.SUGGEST_COLUMN_TEXT_2);
    PROJECTION_MAP.put(SearchManager.SUGGEST_COLUMN_INTENT_DATA_ID, "_id AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA_ID);
}

@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
    SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
    builder.setTables("table");
    builder.setProjectionMap(PROJECTION_MAP);
    return builder.query(db, projection, selection, selectionArgs, null, null, sortOrder);
}
于 2013-04-26T20:22:45.780 に答える