我正在使用Android 搜索者,搜索者可搜索配置 要在应用程序搜索中显示以前的内容,并希望将建议的响应限制为仅返回以开头的输入?(用户正在输入的内容)

目前"p"返回电话,ipod,照片,快乐,而我所追求的只是电话和照片

一些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 '%'?"
有帮助吗?

解决方案

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

  • selection="display1喜欢?"
  • 选择目标=["%{查询}%"]

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

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

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

其他提示

你试过字符串连接吗?

word LIKE ? || '%'
.

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top