package com.door43.util; import android.content.Context; import android.text.TextWatcher; import android.util.AttributeSet; import android.widget.EditText; import java.util.ArrayList; /** * This class add the ability to remove all text change listeners */ public class ClearableEditText extends EditText { private ArrayList<TextWatcher> mListeners = null; public ClearableEditText(Context context) { super(context); } public ClearableEditText(Context context, AttributeSet attrs) { super(context, attrs); } public ClearableEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public void addTextChangedListener(TextWatcher watcher) { if (mListeners == null) { mListeners = new ArrayList<TextWatcher>(); } mListeners.add(watcher); super.addTextChangedListener(watcher); } @Override public void removeTextChangedListener(TextWatcher watcher) { if (mListeners != null) { int i = mListeners.indexOf(watcher); if (i >= 0) { mListeners.remove(i); } } super.removeTextChangedListener(watcher); } public void clearTextChangedListeners() { if (mListeners != null) { for (TextWatcher watcher : mListeners) { super.removeTextChangedListener(watcher); } mListeners.clear(); mListeners = null; } } }