下面列出了android.widget.TextView#removeTextChangedListener ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* @param textView an observable text view which content text will be formatted using
* {@link
* Mask}
* @param initWithMask this flags defines whether hardcoded head of the mask (e.g "+7 ") will
* fill the initial text of the {@code textView}.
*/
protected void installOn(final TextView textView, final boolean initWithMask) {
if (textView == null) {
throw new IllegalArgumentException("text view cannot be null");
}
this.textView = textView;
this.initWithMask = initWithMask;
// try to remove us from listeners (useful in case user's trying to install the formatter twice on a same TextView)
textView.removeTextChangedListener(this);
textView.addTextChangedListener(this);
this.mask = null;
refreshMask();
}
@Override
public void cleanup() {
for (final Map.Entry<TextView, TextWatcher> entry : mWatching.entrySet()) {
final TextView v = entry.getKey();
final TextWatcher watcher = entry.getValue();
v.removeTextChangedListener(watcher);
}
mWatching.clear();
}
@Override
public void accumulate(View found) {
if (found instanceof TextView) {
final TextView foundTextView = (TextView) found;
final TextWatcher watcher = new TrackingTextWatcher(foundTextView);
final TextWatcher oldWatcher = mWatching.get(foundTextView);
if (null != oldWatcher) {
foundTextView.removeTextChangedListener(oldWatcher);
}
foundTextView.addTextChangedListener(watcher);
mWatching.put(foundTextView, watcher);
}
}
/**
* 移除 TextView 监听,避免内存泄露
*/
public void removeViews(TextView... views) {
if (mViewSet != null && mViewSet.size() > 0) {
for (TextView view : views) {
view.removeTextChangedListener(this);
mViewSet.remove(view);
}
// 触发一次监听
notifyChanged();
}
}
/**
* 移除所有 TextView 监听,避免内存泄露
*/
public void removeAllViews() {
if (mViewSet == null) {
return;
}
for (TextView view : mViewSet) {
view.removeTextChangedListener(this);
}
mViewSet.clear();
mViewSet = null;
}
private void setPhoneNumberWatcherToTextView(TextView textView, String countryNameCode) {
if (!mIsEnablePhoneNumberWatcher) return;
if (mPhoneNumberWatcher == null) {
mPhoneNumberWatcher = new PhoneNumberWatcher(countryNameCode);
textView.addTextChangedListener(mPhoneNumberWatcher);
} else {
if (!mPhoneNumberWatcher.getPreviousCountryCode().equalsIgnoreCase(countryNameCode)) {
textView.removeTextChangedListener(mPhoneNumberWatcher);
mPhoneNumberWatcher = new PhoneNumberWatcher(countryNameCode);
textView.addTextChangedListener(mPhoneNumberWatcher);
}
}
}
private void refreshTextChangedListener(TextView pTextView) {
LayoutParams lSLLP = getChildLayoutParams(pTextView);
try {
pTextView.removeTextChangedListener(mTextWatcher);
} catch (Throwable e) {
ex(e);
}
if(lSLLP.mTextView_WrapContent_Direction != TextView_WrapContent_Direction.None) {
pTextView.addTextChangedListener(mTextWatcher);
}
}
/**
* Default modifier for removing text change listener
* @param textView - related text view.
* @param watcher - text watcher which has to be removed.
*/
static void removeTextChangedListener(TextView textView, TextWatcher watcher) {
textView.removeTextChangedListener(watcher);
}