Android SearchSuggestSelection启用查询而不是包含搜索

时间:2012-07-25 12:01:11

标签: android search-suggestion

我正在使用Android SearchRecentSuggestionsProviderSearchable Configuration来显示以前的应用内搜索,并希望将建议的响应限制为只返回以?开头的回复? (用户输入的内容)

目前“p”返回手机,iPod,照片,快乐,以及我所追求的只是手机和照片

像SQL一样eqlivent到SQL,但我似乎无法让它工作。

<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:hint="@string/product_search_hint"
    android:imeOptions="actionSearch"
    android:label="@string/app_label"
    android:searchSuggestAuthority="com.myapp.ProductSearchSuggestionProvider"
    android:searchSuggestSelection="word MATCH ?" >
</searchable>

试过:

android:searchSuggestSelection="WORD LIKE '%'?"

2 个答案:

答案 0 :(得分:1)

如果您要实现完全自定义的建议提供程序,则在此级别应用自定义项将按预期工作。但是,在封面下,SearchRecentSuggestionsProvider使用以下硬编码参数(have a look)查询其本地表:

  • selection =“display1 LIKE?”
  • selectionArgs = [“%{query}%”]

其中{query}是搜索查询(它夹在两个百分号之间,以便任何字符匹配字符串中的任何位置)。它忽略了为选择字符串传递的值(这是你使用searchSuggestSelection参数设置的)和args数组(除了检查它是否为空),所以你真的没有太多可以做的XML。

因为实现忽略了传入参数,所以没有简单的修复或覆盖。为了节省自己的重复编码,我会:

  1. 从上面的链接复制SearchRecentSuggestionsProvider的整个实施。该类所做的任何内容都不应该是框架私有的,因此应该编译直接副本。
  2. query()方法中args数组的构造语句修改为String like = selectionArgs[0] + "%"而不是String like = "%" + selectionArgs[0] + "%"(即删除第一个百分比)
  3. 来自您的新实施的子类ProductSearchSuggestionProvider

答案 1 :(得分:0)

您是否尝试过字符串连接?

word LIKE ? || '%'

||是SQLite中的字符串连接。