我在做什麼:在Android中進行自定義搜索,可以跨多列查看用戶的建議。將多個列映射到一列以獲取自定義搜索建議
我可以將單個「主題」列映射到系統指定的SUGGEST_COLUMN_TEXT_1
,而且工作起來非常出色,我甚至會將主題分組以刪除重複條目。但是,我想要的是將作者名字||''作者姓氏'(將這兩個字符串連接爲單個行條目)和「作者組名稱」包含到單個SUGGEST_COLUMN_TEXT_1(和然後弄清楚如何根據任何重複進行分組?)。
我想過使用一個HashMap,但查詢構建器調用了一個字符串,所以我不知道這會工作。
這可能嗎?不,我確定它是。有任何想法嗎?也許是一個聯盟?我已經評論了下面的一些代碼,但似乎並不奏效。
private static final HashMap<String, String> SEARCH_PROJECTION_MAP;
static {
SEARCH_PROJECTION_MAP = new HashMap<String, String>();
SEARCH_PROJECTION_MAP.put("_id", "_id");
SEARCH_PROJECTION_MAP.put(SearchManager.SUGGEST_COLUMN_TEXT_1,
ExternalDbContract.QuoteEntry.TOPIC
// + " OR \"" + ExternalDbContract.QuoteEntry.AUTHOR_FIRST_NAME
// + "\" || \' \' || \"" + ExternalDbContract.QuoteEntry.AUTHOR_LAST_NAME
// + "\" OR \"" + ExternalDbContract.QuoteEntry.AUTHOR_GROUP_NAME
+ "\" AS "
+ SearchManager.SUGGEST_COLUMN_TEXT_1);
}
至於原始的SQL去,我覺得這就是我要完成的:
"SELECT Topic FROM quotes WHERE Topic LIKE " + selectionArgs[0] +
"UNION SELECT \"Author First Name\" || ' ' || \"Author Last Name\" FROM quotes WHERE \"Author First Name\" LIKE " + selectionArgs[0] + " OR " + "\"Author Last Name\" LIKE " + selectionArgs[0] +
"UNION SELECT \"Author Group Name\" FROM quotes WHERE \"Author Group Name\" LIKE " + selectionArgs[0] +
"ORDER BY ASC LIMIT 10";
我怎麼可能做到這一點與Android的定製建議格式?