2016-04-08 18 views
0

In der Android-Dokumentation, in dem Thema ‚Hinzufügen von benutzerdefinierten Vorschläge‘ für Suchfunktion, heißt es, dass:Welche Methode wird aufgerufen, wenn Abfragetext in SearchView geändert wird, während sowohl Suchvorschläge als auch OnQueryTextListener-Schnittstelle implementiert sind?

Wenn der Benutzer die Eingabe in die Dialog Suche beginnt oder Widget suchen, das System Ihre Inhalte abfragt Anbieter für Vorschläge durch den Aufruf query() jedes Mal, wenn ein Brief eingegeben wird.

Quelle: https://developer.android.com/guide/topics/search/adding-custom-suggestions.html#CustomContentProvider

Auch in der Dokumentation auf SearchView.OnQueryTextListener Schnittstelle (die Rückrufe für Änderungen an den Abfragetext bieten sollte), wobei das Verfahren onQueryTextChange (String newText) ist

Wird aufgerufen, wenn der Abfragetext vom Benutzer geändert wird.

Quelle: https://developer.android.com/reference/android/widget/SearchView.OnQueryTextListener.html#onQueryTextChange%28java.lang.String%29

Ich versuche SearchView.OnQueryTextListener zu implementieren, um sicherzustellen, dass der Loader im Aufruf onQueryTextChange (String newText) neu gestartet wird mit der „next“ Abfrage zu behandeln, weil Android die Abfrage erneut nicht ausführen wenn sich der Abfragetext nach der ersten Suche ändert (dh wenn einmal eine Suche bereits einmal durchgeführt wurde).

Meine Frage ist: Wenn beide Custom Search Vorschläge und SearchView.OnQueryTextListener Schnittstelle implementiert wurden, dann, welche dieser beiden Methoden query() (genannt durch das Android-System) und onQueryTextChange (String newText) (Callback-Methode) aufgerufen wird, wenn Der Abfragetext ändert sich im SearchView-Widget?

Antwort

0
@Override 
public boolean onQueryTextChange(String query) { 
    return false; 
} 

@Override 
public boolean onQueryTextSubmit(String query) { 
    return false; 
} 

Hinweis: Ihre Aktivität implementieren sollten SearchView.OnQueryTextListener

auf Ihre Frage zu beantworten, onQueryTextChange() aufgerufen, wenn der Typ Benutzer oder einen Buchstaben löschen und onQueryTextSubmit() es heißt, wenn der Benutzer die fertig Taste auf der Tastatur drücken. Sie können dies leicht überprüfen, indem Sie einige logcat hinzufügen.

+0

Danke, nur in der Frage bearbeitet. – user1906035

+0

Wenn jedoch die benutzerdefinierten Suchvorschläge bei der Suche aktiviert sind, ruft das Android-System die query() -Methode nicht auf, um den ContentProvider jedes Mal abzufragen, wenn ein Buchstabe eingegeben wird? – user1906035

+0

Was meinen Sie mit Android den ContentProvider abfragen? Sie müssen die Suche von Ihrem Array oder was haben Sie und ersetzen Sie das tatsächliche Ergebnis mit dem, was Sie haben. –