From 815dd290381af616a8f4eb8611032259afe43570 Mon Sep 17 00:00:00 2001 From: "admin.ilegra" Date: Wed, 21 Jun 2017 20:32:15 -0300 Subject: [PATCH] Added funcionality to pause and restart textwatchers --- .../MaterialBaseEditText.java | 68 +++++++++++++++++++ .../materialedittext/MaterialEditText.java | 2 +- 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 library/src/main/java/com/rengwuxian/materialedittext/MaterialBaseEditText.java diff --git a/library/src/main/java/com/rengwuxian/materialedittext/MaterialBaseEditText.java b/library/src/main/java/com/rengwuxian/materialedittext/MaterialBaseEditText.java new file mode 100644 index 00000000..350abe0b --- /dev/null +++ b/library/src/main/java/com/rengwuxian/materialedittext/MaterialBaseEditText.java @@ -0,0 +1,68 @@ +package com.rengwuxian.materialedittext; + +import android.content.Context; +import android.support.v7.widget.AppCompatEditText; +import android.text.TextWatcher; +import android.util.AttributeSet; + +import java.util.ArrayList; + +/** + * Created by admin.ilegra on 21/06/17. + */ + +public class MaterialBaseEditText extends AppCompatEditText { + + ArrayList activeListeners = null; + ArrayList pausedListeners = null; + + public MaterialBaseEditText(Context context) { + super(context); + } + + public MaterialBaseEditText(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public MaterialBaseEditText(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + public void addTextChangedListener(TextWatcher watcher) { + if (activeListeners == null) + activeListeners = new ArrayList<>(); + + activeListeners.add(watcher); + + super.addTextChangedListener(watcher); + + } + + @Override + public void removeTextChangedListener(TextWatcher watcher) { + if (activeListeners != null) + activeListeners.remove(watcher); + + super.removeTextChangedListener(watcher); + } + + public void pauseTextChangedListeners() { + pausedListeners = activeListeners; + + for (TextWatcher listener: activeListeners) { + super.removeTextChangedListener(listener); + } + + activeListeners = null; + } + + public void restartPausedTextChangedListeners() { + if (pausedListeners == null) + return; + for (TextWatcher watcher: pausedListeners) { + super.addTextChangedListener(watcher); + } + pausedListeners = null; + } +} diff --git a/library/src/main/java/com/rengwuxian/materialedittext/MaterialEditText.java b/library/src/main/java/com/rengwuxian/materialedittext/MaterialEditText.java index 516722e6..edfbcf1e 100755 --- a/library/src/main/java/com/rengwuxian/materialedittext/MaterialEditText.java +++ b/library/src/main/java/com/rengwuxian/materialedittext/MaterialEditText.java @@ -48,7 +48,7 @@ * author:rengwuxian *

*/ -public class MaterialEditText extends AppCompatEditText { +public class MaterialEditText extends MaterialBaseEditText { @IntDef({FLOATING_LABEL_NONE, FLOATING_LABEL_NORMAL, FLOATING_LABEL_HIGHLIGHT}) public @interface FloatingLabelType {