如何在ActionBar中使用SearchView处理建议点击事件,ContentProvider调用webService,返回游标?

时间:2013-05-27 13:25:23

标签: android android-contentprovider searchview

当我尝试在ActionBar上使用searchView设置自动完成搜索时出现问题。

我有一个contentProvider,它自己调用webService来获取建议。 它返回一个光标,建议在UI上正确显示。

问题是,当我选择其中一条建议时,没有任何事情发生。

我不确定在SUGGEST_COLUMN_INTENT_ACTION中存储什么。

当阅读documentation时,我明白应该再次调用我的活动的onCreate方法,并且我可以让SUGGEST_COLUMN_INTENT_ACTION知道上下文并使用intent.getData()获取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>

1 个答案:

答案 0 :(得分:6)

我刚刚将 setOnClickListener 更改为 setOnSuggestionListener 并且有效...

现在,我得到了点击建议的位置,但我需要在搜索完成后我的提供者在游标中设置的ID。我这样做了:

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

这是最好的方法吗?

由于缺乏关于使用contentProvider异步调用webService的actionBar中的searchView的好教程,我只是试着让这个工作,我还有另一个问题:

我从不创建任何描述显示我的建议的列表的xml文件。它是如何工作的 ?它是否设法根据我的contentProvider返回的curosr的描述来创建这个listView?

再次感谢。