2014-01-29 38 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; 
} 
相關問題