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

Seb*_*Seb 5 android android-contentprovider searchview

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

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

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

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

在阅读文档时,我理解应该再次调用我的活动的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>
Run Code Online (Sandbox Code Playgroud)

Seb*_*Seb 6

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

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

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

这是最好的方法吗?

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

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

谢谢了.

  • 使用'cur.moveToPosition(position)'代替'cur.move(position)' (3认同)