2011-08-17 33 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

相关问题