muszę do wykrywania zmian tekstu w EditText. Próbowałem TextWatchera, ale nie działa w sposób, jakiego oczekiwałbym. Weź metodę onTextChanged:Wykrywanie zmian w EditText (TextWatcher nieskutecznego)
public void onTextChanged(CharSequence s, int start, int before, int count)
że mam tekst "John" w już w EditText. Jeśli naciśnij inny przycisk, „e”, s
będzie „Johne” start
będzie 0, before
będzie 4, a count
będzie 5. Sposób spodziewałbym ten sposób pracować będzie różnica między tym, co wcześniej EditText było i co się stanie.
Więc chciałbym się spodziewać:
s = "Johne"
start = 4 // inserting character at index = 4
before = 0 // adding a character, so there was nothing there before
count = 1 // inserting one character
muszę być w stanie wykrywać poszczególne zmiany każdym naciśnięciu klawisza. Więc jeśli mam tekst "John", muszę wiedzieć, że "e" zostało dodane w indeksie 4. Jeśli mam backspace "e", muszę wiedzieć, że "e" zostało usunięte z indeksu 4. Jeśli umieściłem kursor po "J" "i backspace, muszę wiedzieć" J "został usunięty z indeksu 0. Jeśli wstawię" G ", gdzie" J "było, chcę wiedzieć" G "zastąpione" J "na indeksie 0.
Jak czy mogę to osiągnąć? Nie mogę wymyślić wiarygodnego sposobu na zrobienie tego.
try onKeyListener dla EditText –
Co o wklejanie ze schowka? –
Innym problemem, który mam, jest to, że wybrałem zakres tekstowy. W dowolnej z metod TextWatcher, getSelectionStart i End są zawsze tym samym indeksem, niezależnie od tego, czy mam zaznaczony tekst, czy nie. –