-3

Unten ist ein Beispiel, das mein Problem mit Verzögerung reproduziert. Sobald ich den Text auf EditTextView gesetzt habe, dauert es mindestens 1,5 Sekunden, bis der Benutzer ein anderes Zeichen eingeben darf.Verzögerung nach dem Festlegen von Text in OnTextChanged()

amountEditText.addTextChangedListener(new TextWatcher() { 
     @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 
     @Override public void afterTextChanged(Editable s) {} 
     @Override public void onTextChanged(CharSequence s, int start, int before, int count) { 
      String amount = s.toString(); 

      if(!amount.equals(current)) { 
       amountEditText.removeTextChangedListener(this); 
       amountEditText.setText(s); 
       Selection.setSelection(amountEditText.getText(), amountEditText.getText().length()); 
       amountEditText.addTextChangedListener(this); 
      } 
     } 
    }); 

Ich habe gesucht und habe keine Lösung gefunden.

+0

Bitte überprüfen Sie diesen Link. Es könnte Ihnen helfen, https://github.com/BlacKCaT27/CurrencyEditText – bhaumiksoni

Antwort

0

Ich erkannte, dass das Problem von der TextView.setText() -Aufruf kam.

Die Lösung bestand darin, setText() nicht zu verwenden, sondern das Editable zu verwenden, das Ihnen im onTextChanged-Callback bereitgestellt wird.

Ich habe versucht, die Editierbar vor, aber ich konnte es nicht mit Eingaben wie "$ 12.000" arbeiten.

Dies lag daran, dass InputFilters noch an Editable angehängt wurde.

Grüße, Scott.

0

Es verzögert sich, weil Sie Ihren Listener entfernen und dann erneut lasen.

0

Sie scheinen zu versuchen, den Text innerhalb des EditText auszuwählen. Um dies zu tun, setzen Sie einfach editText.setSelectAllOnFocus(true); oder android:selectAllOnFocus="true" in XML. Entfernen Sie dann den gesamten TextChangedListener aus Ihrem Code.

0

Laut mir ist es wahrscheinlich wegen des Versuchs zu entfernen (amountEditText.removeTextChangedListener(this);) und hinzufügen (amountEditText.addTextChangedListener(this);) der Text Change Listener jedes Mal. Ich würde Ihnen empfehlen, Ihren Code ohne das Hinzufügen und Entfernen zu ersetzen.

Hoffe das half.

Verwandte Themen