在Android searchview中显示建议列表中的选择

时间:2014-01-29 06:53:45

标签: android searchview

我有一个带有建议清单的搜索查看。如果用户从列表中选择一个项目,则会发送一个新意图,我可以应用我的过滤器,但搜索视图仍为空。

如果我使用setQuery更新onNewIntent中的搜索视图(见下文),效果是所选项目显示在搜索视图中,但建议列表会再次弹出。我可以避免这种情况,只在搜索视图中显示当前查询文本而不会弹出建议列表吗?

@Override
protected void onNewIntent(Intent intent) {
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
    final String query = intent.getStringExtra(SearchManager.QUERY);
    if (!query.equals(searchView.getQuery())) {
    searchView.setQuery(query, false); // makes the suggestions pop up
    }
    applyFilter(query);
}
}

1 个答案:

答案 0 :(得分:28)

诀窍是在搜索视图上使用onSubmitListener替换搜索管理器的默认行为,并从其onSuggestionClick方法返回true,而不是在intent处理程序中调用setQuery(query,false):

@Override
public boolean onSuggestionClick(int position) {
String suggestion = getSuggestion(position);
searchView.setQuery(suggestion, true); // submit query now
return true; // replace default search manager behaviour
}

private String getSuggestion(int position) {
Cursor cursor = (Cursor) searchView.getSuggestionsAdapter().getItem(
    position);
String suggest1 = cursor.getString(cursor
    .getColumnIndex(SearchManager.SUGGEST_COLUMN_TEXT_1));
return suggest1;
}