From b377e0656eb082c3d8e4b2e580f631713c9ff595 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Thu, 27 May 2021 04:17:22 -0700 Subject: [PATCH] Adds TextChangedListener helper class to make working with text inputs less verbose. --- .../utils/TextChangedListener.java | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 app/src/main/java/com/majinnaibu/monstercards/utils/TextChangedListener.java diff --git a/app/src/main/java/com/majinnaibu/monstercards/utils/TextChangedListener.java b/app/src/main/java/com/majinnaibu/monstercards/utils/TextChangedListener.java new file mode 100644 index 0000000..5f3cbbd --- /dev/null +++ b/app/src/main/java/com/majinnaibu/monstercards/utils/TextChangedListener.java @@ -0,0 +1,74 @@ +package com.majinnaibu.monstercards.utils; + +import android.text.Editable; +import android.text.TextWatcher; + +public class TextChangedListener implements TextWatcher { + + private final BeforeTextChangedCallback mBeforeTextChangedCallback; + private final OnTextChangedCallback mOnTextChangedCallback; + private final AfterTextChangedCallback mAfterTextChangedCallback; + + public TextChangedListener(BeforeTextChangedCallback beforeTextChangedCallback, OnTextChangedCallback onTextChangedCallback, AfterTextChangedCallback afterTextChangedCallback) { + mBeforeTextChangedCallback = beforeTextChangedCallback; + mOnTextChangedCallback = onTextChangedCallback; + mAfterTextChangedCallback = afterTextChangedCallback; + } + + public TextChangedListener(OnTextChangedCallback callback) { + this(null, callback, null); + } + + public TextChangedListener(BeforeTextChangedCallback callback) { + this(callback, null, null); + } + + public TextChangedListener(AfterTextChangedCallback callback) { + this(null, null, callback); + } + + public TextChangedListener(BeforeTextChangedCallback beforeTextChangedCallback, OnTextChangedCallback onTextChangedCallback) { + this(beforeTextChangedCallback, onTextChangedCallback, null); + } + + public TextChangedListener(BeforeTextChangedCallback beforeTextChangedCallback, AfterTextChangedCallback afterTextChangedCallback) { + this(beforeTextChangedCallback, null, afterTextChangedCallback); + } + + public TextChangedListener(OnTextChangedCallback onTextChangedCallback, AfterTextChangedCallback afterTextChangedCallback) { + this(null, onTextChangedCallback, afterTextChangedCallback); + } + + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + if (mBeforeTextChangedCallback != null) { + mBeforeTextChangedCallback.beforeTextChanged(s, start, count, after); + } + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (mOnTextChangedCallback != null) { + mOnTextChangedCallback.onTextChanged(s, start, before, count); + } + } + + @Override + public void afterTextChanged(Editable s) { + if (mAfterTextChangedCallback != null) { + mAfterTextChangedCallback.afterTextChanged(s); + } + } + + public interface BeforeTextChangedCallback { + void beforeTextChanged(CharSequence s, int start, int count, int after); + } + + public interface OnTextChangedCallback { + void onTextChanged(CharSequence s, int start, int before, int count); + } + + public interface AfterTextChangedCallback { + void afterTextChanged(Editable s); + } +}