Ich habe ein EditText-Feld in meinem Layout. Ich möchte eine Aktion ausführen, wenn der Benutzer die Eingabe in diesem Edittext-Feld beendet. Ich habe TextWatcher implementiert und verwende seine Funktionen
%Vor% Die Funktionen onTextChanged
und afterTextChanged
werden direkt nach der Eingabe eines beliebigen Zeichens aufgerufen, aber ich möchte Aktionen ausführen, nachdem der Benutzer die Eingabe in diesem Edittext-Feld abgeschlossen hat, genau wie Facebook auf seiner "Check In" -Seite / p>
Wie kann ich das umsetzen?
Es gibt eine sehr einfache und einfache Möglichkeit, dies mit RxBindings
für Android zu tun,
Holen Sie sich die Bibliothek, falls Sie es noch nicht getan haben,
%Vor%Fügen Sie dieses Snippet hinzu und ändern Sie es nach Ihren Bedürfnissen,
%Vor%Was ist der Debounce-Operator? - Erfahren Sie hier mehr darüber
> In unserem Kontext benachrichtigt debunce Sie nur über die Textänderung in EditText
, nachdem eine bestimmte Zeit seit der letzten Textänderung in EditText
vergangen ist.
Hier warte ich auf 3 Sekunden , bis die letzte Textänderung zu dem Schluss gekommen ist, dass der Benutzer die Eingabe beendet hat. Sie können es nach Ihren Bedürfnissen ändern.
Es ist ein etwas anderer Ansatz. Aber Sie können so etwas tun
Ich gehe davon aus, dass, nachdem ein Benutzer begonnen hat, den Editiertext einzugeben, und er nicht für eine bestimmte Zeit getippt hat, als angenommen werden kann, dass er mit der Eingabe aufgehört hat.
%Vor%Was Sie im Grunde tun, ist, dass, wann immer ein Benutzer anfängt zu tippen, wenn es eine Zeitlücke von 5.000 Millisekunden gibt, wenn Sie den Text innerhalb des Editiertext ändern, Sie denken, der Benutzer hat die Eingabe beendet. Natürlich können Sie die Zeit auf das ändern, was Sie wollen
Ich habe einen CountDownTimer verwendet, um herauszufinden, ob der Benutzer nach einer Weile aufgehört hat zu tippen. Ich hoffe zu helfen.
%Vor%Tags und Links android android-edittext