Подтвердить что ты не робот

Показать выбор из списка предложений в Android searchview

У меня есть поиск с предложением. Если пользователь выбирает элемент из списка, отправляется новое намерение, и я могу применить свой фильтр, но поиск остается пустым.

Если я обновляю вид поиска в onNewIntent с помощью setQuery (см. ниже), эффект заключается в том, что выбранный элемент отображается в окне поиска, но список предложений появляется снова. Могу ли я избежать этого и показывать только текущий текст запроса в окне поиска без всплывающего списка предложений?

@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);
}
}
4b9b3361

Ответ 1

Трюк заключается в замене поведения по умолчанию менеджера поиска с помощью 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;
}