2012-07-25 58 views
2

我正在使用Android SearchRecentSuggestionsProviderSearchable Configuration來顯示先前的應用搜索,並且希望將建議的響應限制爲僅返回以?開頭的輸入。 (用戶正在輸入)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 '%'?" 
+0

您是否嘗試過'android:searchSuggestSelection =「單詞樣?」',或者'android:searchSuggestSelection =「單詞LIKE'?'」'? – Eric 2012-08-10 19:49:41

+0

嗨埃裏克,不幸的不是:( – scottyab 2012-08-13 09:57:33

回答

1

如果您正在實施完全自定義的建議提供程序,則在此級別應用自定義會按預期工作。然而,在幕後,SearchRecentSuggestionsProvider查詢與下面的硬編碼參數的本地表(have a look):

  • 選擇=「display1樣?」
  • selectionArgs兩個= [「%{查詢}%」]

其中{查詢}是搜索查詢(它被夾在兩個百分號之間,使得在該字符串計數任何字符匹配的任何地方)。它忽略了選擇字符串(這是您使用searchSuggestSelection參數設置的內容)和args數組(無法檢查它是否爲空)傳入的值,因此您從XML中可以做的實際上並不多。

由於實現忽略傳入參數,因此沒有簡單的修復或覆蓋。爲了節省自己重複的編碼,我會:

  1. 從上面的鏈接複製SearchRecentSuggestionsProvider的整個實施。這個類沒有什麼應該是框架專用的,所以應該編譯一個直接副本。
  2. 從args數組從您的新的實現修改構造語句時,query()方法裏面,是String like = selectionArgs[0] + "%",而不是String like = "%" + selectionArgs[0] + "%"(即除去第一百分比)
  3. 子類ProductSearchSuggestionProvider代替。
0

你試過字符串連接?

word LIKE ? || '%' 

||是在SQLite中的字符串連接。