Показать выбор из списка предложений в 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);
}
}
Ответы
Ответ 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;
}