You're using a single TextWatcher for all three fields, and updating all three fields in the onTextChanged method.
I'm guessing that what you really want is three separate TextWatcher instances - one for each field, and to update only that one value in each one.