Como saber, de addTextChangedListener, como o texto foi alterado

Eu tenho uma tela com um EditText e um ListView. À medida que você digita no EditText, um AsyncTask é iniciado (qualquer AsyncTask existente é cancelado e lançado) para consultar localmente alguns dados a serem exibidos no ListView. Se o EditText estiver vazio de texto, todos os dados serão consultados e exibidos. Essencialmente, o EditText é um filtro dos dados na tela. Isso é fácil de fazer. No addTextChangedListener, simplesmente cancele seu AsyncTask anterior, inicie um novo e passe para ele s.toString ().

Quando o usuário atinge o backspace para apagar algum texto no EditText, eu quero o comportamento padrão (onde todos os dados preenchem a lista). Isso funciona com minha implementação atual de addTextChangedListener.

No entanto, também tenho um botão X no lado direito do meu EditText. Isso destina-se a limpar o EditText (EditText.setText("");). Este é um caso especial. Nesse caso, não quero que a consulta aconteça. O problema é que addTextChangedListener não parece inteligente o suficiente para saber disso. Ele é acionado porque o texto foi alterado e todos os dados foram consultados.

Como evito isso?

questionAnswers(1)

yourAnswerToTheQuestion