2014-01-29 4 views
11

Ich habe eine Suchansicht mit Vorschlagsliste. Wenn der Benutzer ein Element aus der Liste auswählt, wird eine neue Absicht gesendet und ich kann meinen Filter anwenden, aber die Suchansicht bleibt leer.Auswahl aus der Vorschlagsliste in Android searchview anzeigen

Wenn ich die Suchansicht in onNewIntent mit setQuery (siehe unten) aktualisiere, wird der ausgewählte Eintrag in der Suchansicht angezeigt, aber die Vorschlagsliste wird wieder angezeigt. Kann ich das vermeiden und nur den aktuellen Abfragetext in der Suchansicht anzeigen, ohne dass die Vorschlagsliste erscheint?

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

Antwort

27

Der Trick ist, um das Standardverhalten des Such-Managers zu ersetzen durch eine onSubmitListener auf der Suchansicht verwenden und wahr von seiner onSuggestionClick Methode zurückkehrt, anstatt Aufruf setQuery (Abfrage, false) in den Intent-Handler:

@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; 
}