How can I avoid execution of onTextChanged in Android's EditText

android, android-edittext, autocompletetextview

Solution

The Source for AutoCompleteTextView shows that they set a boolean to say the text is being replaced by the block completion

         mBlockCompletion = true;
         replaceText(convertSelectionToString(selectedItem));
         mBlockCompletion = false;    

This is as good a way as any to achieve what you want to do. The TextWatcher then checks to to see if the setText has come via a completion and returns out of the method

 void doBeforeTextChanged() {
     if (mBlockCompletion) return;

Adding and removing the TextWatcher will be more time consuming for the application

Problem

How can I avoid that a code line like: ``` ((EditText) findViewById(R.id.MyEditText)).setText("Hello"); ``` Will cause an event here: ``` ((EditText) findViewById(R.id.MyEditText)).addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // HERE } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { } }); ``` I want to know if there is any way to inhibit the execution of onTextChanged as I noticed in the case of selecting a AutoCompleteTextView's dropdown result (no onTextChanged is executed!). I'm not seeking for workarounds like "if hello do nothing"...

Original source

Related problems