当我尝试在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>
答案 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?
再次感谢。