开发者

How to check if an EditText was changed or not?

开发者 https://www.devze.com 2023-04-04 21:03 出处:网络
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.You need a

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.


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) {

  }
}


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.


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) {

    }
});


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消