2014-01-29 44 views
11

我有一个带有建议列表的搜索视图。如果用户从列表中选择一个项目,则发送新的意图,并且我可以应用我的过滤器,但搜索视图保持空白。显示在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); 
} 
} 

回答

27

诀窍是在意向处理程序使用onSubmitListener在搜索视图,并返回true从onSuggestionClick方法,而不是调用setQuery(查询,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; 
} 
相关问题