используя идею "CustomTextWatcher", я сделал, что
1) упаковали новый интерфейс TextWatcherListener:
public interface TextWatcherExtendedListener extends NoCopySpan
{
public void afterTextChanged(View v, Editable s);
public void onTextChanged(View v, CharSequence s, int start, int before, int count);
public void beforeTextChanged(View v, CharSequence s, int start, int count, int after);
}
2) создается и используется EditTextExtended вместо EditText (в моем случае):
public class EditTextExtended extends EditText
{
private TextWatcherExtendedListener mListeners = null;
public EditTextExtended(Context context)
{
super(context);
}
public EditTextExtended(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public EditTextExtended(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
}
public void addTextChangedListener(TextWatcherExtendedListener watcher)
{
if (mListeners == null)
{
mListeners = watcher;
}
}
public void removeTextChangedListener(TextWatcherExtendedListener watcher)
{
if (mListeners != null)
{
mListeners = null;
}
}
void sendBeforeTextChanged(CharSequence text, int start, int before, int after)
{
if (mListeners != null)
{
mListeners.beforeTextChanged(this, text, start, before, after);
}
}
void sendOnTextChanged(CharSequence text, int start, int before,int after)
{
if (mListeners != null)
{
mListeners.onTextChanged(this, text, start, before, after);
}
}
void sendAfterTextChanged(Editable text)
{
if (mListeners != null)
{
mListeners.afterTextChanged(this, text);
}
}
}
3) Итак, где вам нужно написать этот код:
myEditTextExtended.addTextChangedListener(this) //Let implement TextWatcherExtendedListener methods
4) использовать их:
@Override
public void onTextChanged(View v, CharSequence s, int start, int before, int count)
{
//Tested and works
//do your stuff
}
@Override
public void beforeTextChanged(View v, CharSequence s, int start, int count, int after)
{
//not yet tested but it should work
}
@Override
public void afterTextChanged(View v, Editable s)
{
//not yet tested but it should work
}
Ну, дайте мне знать, что вы думаете.
Возможный дубликат [Как использовать Single TextWatcher для нескольких EditTexts?] (Http://stackoverflow.com/questions/5702771/how-to-use-single-textwatcher-for-multiple-edittexts) – 2015-10-27 04:04:37
@SkyKelsey Ответ, который вы написали, на самом деле создает несколько экземпляров TextWatcher, поэтому я считаю, что это не идеальный ответ на то, что было задано OP, поскольку мой вопрос заключается в идентификации каждого EditText в методах интерфейса TextWatcher. – 2015-10-29 12:48:26
https://github.com/henrychuangtw/AutoInsertEditText – HenryChuang 2017-01-18 02:12:12