2011-08-17 49 views
1

我正在爲我的應用程序的本地搜索歷史記錄指定一個圖標,但我沒有看到任何可以讓我輕鬆添加的文檔。要明確,我正在使用內置的Android搜索API並利用我已實現的SearchRecentSuggestionsProvider。有沒有辦法爲SearchRecentSuggestionsProvider指定圖標?

此外,我瞄準API 7級

-Dan

回答

2

好吧,我不知道這是否是完成我問過最簡單的方法,但這裏是我是如何做的:

  1. 創建另一個的ContentProvider和使用,在我的searchable.xml
  2. 這個新的ContentProvider的查詢方法將使用特殊參數和特殊URI查詢我的SearchRecentSuggestionsProvider並返回該Cursor。我的新的ContentProvider的

源代碼片段:

... 
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { 
final String[] PROJECTION = new String[] { 
     "_id", 
     "display1 AS " + SearchManager.SUGGEST_COLUMN_TEXT_1, 
     "display2 AS " + SearchManager.SUGGEST_COLUMN_TEXT_2, 
     "query AS " + SearchManager.SUGGEST_COLUMN_QUERY, 
     android.R.drawable.ic_menu_recent_history + " AS " + SearchManager.SUGGEST_COLUMN_ICON_1, 
    }; 
    final Uri URI = 
     Uri.parse("content://" + SearchHistoryProvider.AUTHORITY + "/suggestions"); 
    return getContext().getContentResolver().query(
     URI, 
     PROJECTION, 
     "display1 LIKE ?", 
     new String[] {selectionArgs[0] + "%"}, 
     "date DESC"); 
} 
... 

如果未設置SearchRecentSuggestionsProvider了上面的投影使用兩條線「顯示2」應改爲「空」或者也許可以完全省略。

如果在URI中省略了「建議」路徑,它將不起作用。它必須是'建議',否則你會看到'無效Uri'例外。

我通過挖掘SearchRecentSuggestionsProvider的源代碼挖掘了大部分信息。

+0

我使用了類似的解決方案,但對於所有結果我都得到相同的圖標,但我想爲所有結果項目製作不同的圖標。有關如何實現它的任何想法? – atabek

相關問題