我正在使用Android SearchRecentSuggestionsProvider和Searchable 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 '%'?"
答案 0 :(得分:1)
如果您要实现完全自定义的建议提供程序,则在此级别应用自定义项将按预期工作。但是,在封面下,SearchRecentSuggestionsProvider使用以下硬编码参数(have a look)查询其本地表:
其中{query}是搜索查询(它夹在两个百分号之间,以便任何字符匹配字符串中的任何位置)。它忽略了为选择字符串传递的值(这是你使用searchSuggestSelection
参数设置的)和args数组(除了检查它是否为空),所以你真的没有太多可以做的XML。
因为实现忽略了传入参数,所以没有简单的修复或覆盖。为了节省自己的重复编码,我会:
SearchRecentSuggestionsProvider
的整个实施。该类所做的任何内容都不应该是框架私有的,因此应该编译直接副本。query()
方法中args数组的构造语句修改为String like = selectionArgs[0] + "%"
而不是String like = "%" + selectionArgs[0] + "%"
(即删除第一个百分比)ProductSearchSuggestionProvider
。答案 1 :(得分:0)
您是否尝试过字符串连接?
word LIKE ? || '%'
||
是SQLite中的字符串连接。