I need to know if an EditText was changed or not, not whether or not the user inputted some text in the field, but only the if String was changed.
Asked
Active
Viewed 3.0k times
4 Answers
57
You need a
TextWatcher
See it here in action:
EditText text = (EditText) findViewById(R.id.YOUR_ID);
text.addTextChangedListener(textWatcher);
private TextWatcher textWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
}

Graham Smith
- 25,627
- 10
- 46
- 69

j7nn7k
- 17,995
- 19
- 78
- 88
10
If you change your mind to listen to the keystrokes you can use OnKeyListener
EditText et = (EditText) findViewById(R.id.search_box);
et.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
//key listening stuff
return false;
}
});
But Johe's answer is what you need.

Y.A.P.
- 528
- 4
- 12
7
This actually worked for me
EditText text = (EditText) findViewById(R.id.YOUR_ID);
text.addTextChangedListener(new TextWatcher() {
@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(your_string.equals(String.valueOf(s))) {
//do something
}else{
//do something
}
}
@Override
public void afterTextChanged(Editable s) {
}
});

Paul Roub
- 36,322
- 27
- 84
- 93

Shreyas Sanil
- 532
- 1
- 7
- 19
4
Implement a TextWatcher. It gives you three methods, beforeTextChanged
, onTextChanged
, and afterTextChanged
. The last method shouldn't be called until something changes anyway, so that's a good thing to use for it.

DeeV
- 35,865
- 9
- 108
- 95