Wie vermeide ich mehrere Trigger auf EditText, während der Benutzer tippt?
Ich verwende den folgenden Code, um eine Suche durchzuführen, wenn der Benutzer einen EditText eingibt:
<code>EditText queryView = (EditText) findViewById(R.id.querybox); queryView.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) { triggerSearch(s.toString()); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } }); </code>
Dies wird jedoch mehrmals ausgelöst, wenn der Benutzer ein Wort eingibt. Wenn der Benutzer "hallo" eingibt, wird dieser Code fünfmal mit Werten ausgelöst ("h", "er", "hel", "hölle", "hallo"). Normalerweise wäre das in Ordnung, aber die ausgelöste Suche ist teuer und ich möchte keine Ressourcen für Zwischensuchen verschwenden, die keinen großen Nutzen haben. Was ich möchte, ist entweder ein Listener, der nur einen bestimmten Schwellenwert auslöst, nachdem der Benutzer mit der Eingabe begonnen hat, oder eine Art Framework, das vor dem Aufruf im Listener wartettriggerSearch
, und wenn ein anderes Ereignis vor dieser Wartezeit ausgelöst wird, bricht es sich selbst ab.