Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android Searchable之Recent Query Suggestions(上)

Android Searchable之Recent Query Suggestions(上)

編輯:Android開發實例

原文地址:http://developer.android.com/guide/topics/search/adding-recent-query-suggestions.html 當你使用search dialog or search widget的時候, 你可以提供基於recent search queries的provide search suggestions.  比如所用戶以前搜索過"puppies," 當用戶開始輸入和他一樣的時候,這個query將出現在suggestion中. 圖一就是一個在search dialog中使用recent query suggestions的界面圖。 圖一:   在開始實現recent search queries之前,你需要在你的程序中實現search dialog or a search widget基本的搜索 。 關於他們的更多內存請參照《Searchable》系列

基本

Recent query suggestions僅僅是保存搜索過的searches。當用戶選擇了一個suggestions的時候,你的searchable activity將收到一個把suggestion作為搜索關鍵字的ACTION_SEARCH intent,其實你的searchable activity曾經也處理過它。 為了提供recent queries suggestions, 你需要以下幾步:     A、 實現一個searchable activity     B、創建一個繼承於SearchRecentSuggestionsProvider的content provider類,並在你的manifest中聲明它。     C、在searchable配置文件中配置提供search suggestions的content provider.     D、當每次執行搜索的時候,把你的搜索關鍵字保存你的content provider中 當系統顯示search dialog或search widget的時候,就會在它們下面顯示 search suggestions。你所需要做的就是為系統提供提取suggestions的source。 一旦系統識別到了你的searchable activity並且你提供的search suggestions, 當用戶鍵入查詢語句的時候,將執行下面的流程: 1.系統取得用戶當前已經輸入的搜索關鍵字,並在你的content provider(suggestions)執行查詢 2.你的content provider用Cursor返回一個和搜索關鍵字相匹配的所有suggestions 3.系統以列表的形式顯示由Cursor提供的suggestions 一旦recent query suggestions被顯示, 下面的幾種情況之一將發生: A,如果用戶繼續鍵入搜索關鍵詞,或以任何方式改變了搜索關鍵詞,上面的行為將重復,suggestion list也將更新 B,如果用戶執行搜索的話,suggestions將被忽略,用戶輸入的搜索關鍵詞將通過ACTION_SEARCH intent傳遞到你的searchable activity C,如果用戶選擇了一個suggestion, 將使用這個suggested text做為查詢關鍵字從ACTION_SEARCH intent傳遞到你searchable activity 你的繼承自SearchRecentSuggestionsProvider的content provider將自動的做上面的工作,所以實事上你只有很少的代碼需要編寫。 創建Content Provider 你用於recent query suggestions的content provider必須是一個SearchRecentSuggestionsProvider的實現。實際上它已經為你提供了所有的東西。你所需要的就是重寫構造函數來加上一行代碼 比如下面就是一個recent query suggestions的content provider的完整實現。 示例1 public class MySuggestionProvider extends SearchRecentSuggestionsProvider {
    public final static String AUTHORITY = "com.example.MySuggestionProvider";
    public final static int MODE = DATABASE_MODE_QUERIES;
    public MySuggestionProvider() {
       
setupSuggestions(AUTHORITY, MODE);
    }
}
調用setupSuggestions() 需要兩個參數,一個是搜索的授權名,另一個是數據庫的模式。搜索授權必須是unique的字符串,但是一般最好的就是使用你的content provider的qualified name(包名加上provider的類名; 比如 "com.example.MySuggestionProvider"). 數據庫模式必須包含DATABASE_MODE_QUERIES,也可以加上可選項DATABASE_MODE_2LINES。它將在suggestions表的基礎上再加入一行,它允許你為每個suggestion再添加一行文本。比如,你想讓沒suggestion都有2行的話,可以這樣:
示例2:
public final static int MODE = DATABASE_MODE_QUERIES | DATABASE_MODE_2LINES;
注意你在manifest為該content provide聲明的授權必須和setupSuggestions(AUTHORITY, MODE);中聲明的授權一樣。
比如:示例2:
<application>
    <provider android:name=".MySuggestionProvider"
              android:authorities="com.example.MySuggestionProvider" />
    ...
</application>
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved