2013-05-27 46 views
4

我嘗試使用ActionBar上的searchView設置自動完成搜索時出現問題。如何使用ActionBar中的SearchView處理建議點擊事件,ContentProvider調用webService,返回光標?

我有一個contentProvider,它自己調用webService來獲取建議。 它返回一個遊標,並在UI上正確顯示該建議。

問題是,當我選擇其中一個建議時,沒有任何事情發生。

我不確定要在SUGGEST_COLUMN_INTENT_ACTION中存儲什麼。

當閱讀documentation時,我明白應該再次調用我的活動的onCreate方法,並且可以通過intent.getData()獲取SUGGEST_COLUMN_INTENT_ACTION以瞭解上下文並獲取SUGGEST_COLUMN_INTENT_DATA。

的的onCreate不會被調用,沒有拋出異常,沒有任何反應......

有什麼我錯過了?當我選擇一個建議時爲什麼沒有發生?

我searchable.xml:

 <?xml version="1.0" encoding="utf-8"?> 
      <searchable xmlns:android="http://schemas.android.com/apk/res/android" 
      android:label="@string/app_name" 
      android:hint="@string/search_hint" 
      android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" 
      android:searchSuggestAuthority="MyPackage.search_suggestion_provider" 
      android:searchSuggestIntentAction="android.intent.action.SEARCH" > 
     </searchable> 

回答

5

我只是改變了setOnClickListenersetOnSuggestionListener和它的工作...

現在,我得到的建議的位置點擊,但我需要搜索完成後,我的提供商在光標中設置的ID。我這樣做了:

CursorAdapter c = searchView.getSuggestionsAdapter(); 
    ... 
    Cursor cur = c.getCursor(); 
    cur.move(position); 
    String val = cur.getString(cur.getColumnIndex(BaseColumns._ID)); 

這是最好的方法嗎?

由於使用的ContentProvider異步調用WebService的關於動作條的搜索查看缺乏好的教程,我只是嘗試,使這項工作,我已經得到了另一個問題:

我從來沒有創建任何XML文件,描述我的建議顯示的列表。它是如何工作的 ?它是否設法根據我的contentProvider返回的curosr的描述來創建這個listView?

Thx再次。

+0

如果您從SDK管理器下載'SDK for Samples',則會有一個名爲'SearchableDictionary'的應用程序。從那裏,你可以找出你的設置有什麼問題。也許你從清單中跳過了元數據。 – jakk

+3

使用'cur.moveToPosition(位置)'而不是'cur.move(位置)' –

+0

是cur.moveToPosition(位置),將完美工作。不要使用cur.move(位置) – Naruto

相關問題