Один TextWatcher для нескольких EditTexts? - PullRequest
1 голос
/ 27 февраля 2011

У меня есть несколько (12) EditTexts в моей деятельности в парах 2. Я хочу сделать действие для каждой пары, когда текст в них изменяется. Нужно ли мне иметь 6 различных TextWatchers или есть способ использовать один и тот же для или и сделать какое-то переключение?

Ответы [ 2 ]

2 голосов
/ 27 февраля 2011

Вы можете прикрепить одинаковые TextWatcher часы к каждому EditText . В зависимости от того, что вам нужно сделать, вам может потребоваться создать реализацию TextWatcher с некоторым контекстом.

1 голос
/ 08 мая 2014

Мне нужно было это, поэтому я сделал многоразовый ... я расширил класс textwatcher, чтобы я мог передать представление, которое я хочу смотреть.

/**
 *  
 * A TextWatcher which can be reused
 *  
 */
public class ReusableTextWatcher implements TextWatcher {

    private TextView view;

    // view represents the view you want to watch. Should inherit from
    // TextView
    private GenericTextWatcher(View view) {

        if (view instanceof TextView)
            this.view = (TextView) view;
        else
            throw new ClassCastException(
                    "view must be an instance Of TextView");
    }

    @Override
    public void beforeTextChanged(CharSequence charSequence, int i,
            int before, int after) {
    }

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int before,
            int count) {

        int id = view.getId();

        if (id == R.id.someview){
            //do the stuff you need to do for this particular view

            }



        if (id == R.id.someotherview){
            //do the stuff you need to do for this other particular view

            }

    }

    @Override
    public void afterTextChanged(Editable editable) {

    }
}

затем, чтобы использовать его, я делаю что-то вроде этого, чтобы зарегистрировать его:

myEditText.addTextChangedListener(new ReusableTextWatcher(myEditText));
...