I had a strange error occuring with TextWatcher firing multiple times with different inputs on a single change of text, mainly on entering or removing spaces.
After some investigation I got following results on "afterTextChanged":
Test 1, enter space in String "Suger" -> "Su gar":
- "gar"
- " "
- "Su"
- "Su gar"
Test 2, enter another space in String "Su gar" -> "Su ga r":
- "Su r"
- "Su "
- "Su ga "
- "Su ga r"
I've already found a related question suggesting to shut down text suggestions (which I want to keep) or just take the first call (which is plain wrong in my tests): TextWatcher events are being fired multiple times
Theoretically I could just take every event and update everytime because the last one is correct, but I really don't want 3-4 updates in my viewmodel, when one should do the trick.
Has anyone encountered this problem too and has a viable solution?
If needed I can add some code, but I'm really just using the default implementation of a Textwatcher set to an EditText.
For the record, any other people who might run into the same issue:
I've just sat down with new energy for this topic and managed to solve it without using a debouncer or deactivating my autocomplete functionby removing the textwatcher completely.
Instead I used a focusListener like this:
With that in place, I do only get the final result of the text entered by a user, without any events triggered in between. There still is a slight issue currently, since the User can enter something and then press my save-Button and his input is lost (due to focus not having changed), but that's a minor issue and I'm sure there's help for that, too.