Как обрабатывать событие Single TextWatcher для нескольких EditText?

Я использовал три виджета EditText в макете представления для трех разных фильтров. Если я наберу один из них, не должен ли другой EditTexts быть пустым?

Ниже мой фрагмент:

public class Fragment_Assigned extends Fragment {
    public EditText et_first;
    public EditText et_second;
    public EditText et_third;

    private ArrayList<obj> list_first;
    private ArrayList<obj> list_second;
    private ArrayList<obj> list_third;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        et_first = (EditText) v.findViewById(R.id.et_first);
        et_second = (EditText) v.findViewById(R.id.et_second);
        et_third = (EditText) v.findViewById(R.id.et_third);

        listoffline = //getFrom DataBase
        filterListCustomer = listoffline;
        filterListModel = listoffline;
        filterListCompany = listoffline;

        et_first.addTextChangedListener(new GenericTextWatcher(et_first));
        et_second.addTextChangedListener(new GenericTextWatcher(et_second));
        et_third.addTextChangedListener(new GenericTextWatcher(et_third));
    }
}

Метод GenericTextWatcher:

private class GenericTextWatcher implements TextWatcher {
    private View view;

    private GenericTextWatcher(View view) {
        this.view = view;
    }

    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    }

    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    }

    public void afterTextChanged(Editable editable) {
        String text = editable.toString();
        switch (view.getId()) {
            case R.id.et_first:
                //someMethod;
                break;
            case R.id.et_second:
                //someMethod;
                break;
            case R.id.et_third:
                //someMethod;
                break;
        }
    }
}

Когда я запускаю это и набираю EditText, тогда logcat выглядит так:

03-03 15:25:39.616 25952-25952/com.xyz.abc I/art: Явная одновременная очистка меток Сборщик мусора освободил 23671 (1194 КБ) объектов AllocSpace, 3 (43 КБ) объектов LOS, 26 % свободно, 11 МБ/15 МБ, приостановлено 908us всего 15,894 мс

03-03 15:25:39.991 25952-25952/com.xyz.abc I/art: Явная одновременная очистка меток Сборщик мусора освободил 20553 (963 КБ) объекта AllocSpace, 2 (6 МБ) объекта LOS, 39 % свободно, 4 МБ/8 МБ, приостановлено 1,523 мс всего 22,856 мс

03-03 15:25:40.356 25952-25952/com.xyz.abc I/art: Явная одновременная очистка меток Сборщик мусора освободил 14366 (568 КБ) объектов AllocSpace, 0 (0B) объектов LOS, 40 % свободно, 5 МБ/8 МБ, приостановлено 2,214 мс всего 30,546 мс


person Pitty    schedule 03.03.2016    source источник


Ответы (1)


null ваш оставшийся editText при изменении фокуса

    et_first.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            et_second.setText("");
            et_third.setText("");
        }
    });

    et_second.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            et_first.setText("");
            et_third.setText("");
        }
    });

    et_third.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            et_second.setText("");
            et_first.setText("");
        }
    });
person Aditi Parikh    schedule 04.03.2016