Удаление TextChangedListener и его повторное добавление

Итак, я пытался реализовать TextWatcher для Android и столкнулся с несколькими проблемами с TextChangedListener вызывается несколько раз или входит в бесконечный цикл, поскольку я хочу преобразовать текст в виджете EditText в строку, отформатированную в валюте.

Чтобы обойти это, я создал свой собственный TextWatcher, а затем в afterTextChanged событие сделало что-то вроде следующего

public class CurrencyTextWatcher implements TextWatcher {
    private EditText et;

    public CurrencyTextWatcher(EditText editText) {
        et = editText;
    }

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }        

    public void afterTextChanged(Editable s) {
        et.removeTextChangedListener(this);
        et.setText(myCurrencyString);
        et.addTextChangedListener(this);
    }
}

Итак, мой вопрос: есть ли лучший способ сделать это? Я хочу, чтобы у меня был один виджет EditText для хранения правок и итоговой форматированной строки.

Также есть ли какие-либо другие проблемы, связанные с удалением и последующим добавлением TextChangedListener, подобного этому?

Заранее спасибо

]
6
задан Jason 18 July 2011 в 06:21
поделиться