Skip to content

Instantly share code, notes, and snippets.

@piyush-malaviya
Created April 29, 2019 05:01
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save piyush-malaviya/050fa60552f65025bdf542ad1414c090 to your computer and use it in GitHub Desktop.
Save piyush-malaviya/050fa60552f65025bdf542ad1414c090 to your computer and use it in GitHub Desktop.
import android.os.Handler;
import android.text.Editable;
import android.text.TextWatcher;
public abstract class DelayTextWatcher implements TextWatcher {
private final long DELAY = 300; // milliseconds
private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
@Override
public void run() {
onAfterTextChanged();
}
};
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
handler.removeCallbacks(runnable);
handler.postDelayed(runnable, DELAY);
}
protected abstract void onAfterTextChanged();
}
import android.os.Handler;
import android.text.Editable;
import android.text.TextWatcher;
public abstract class TypingTextWatcher implements TextWatcher {
private final long DELAY = 1000; // milliseconds
private Handler handler = new Handler();
private boolean isTyping = false;
private Runnable runnable = new Runnable() {
@Override
public void run() {
isTyping = false;
onTyping(false);
}
};
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (!isTyping) {
onTyping(true);
isTyping = true;
}
handler.removeCallbacks(runnable);
handler.postDelayed(runnable, DELAY);
}
@Override
public void afterTextChanged(Editable s) {
}
protected abstract void onTyping(boolean isTyping);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment