Como evitar vários gatilhos no EditText enquanto o usuário está digitando?
Eu uso o seguinte código para executar a pesquisa quando o usuário digita em um EditText:
<code>EditText queryView = (EditText) findViewById(R.id.querybox); queryView.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) { triggerSearch(s.toString()); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } }); </code>
No entanto, isso dispara várias vezes quando o usuário está digitando uma palavra. Ou seja, se o usuário estiver digitando "olá", esse código irá disparar 5 vezes com valores ("h", "he", "hel", "hell", "hello"). Normalmente, isso seria ótimo, mas a pesquisa acionada é cara e não quero desperdiçar recursos em pesquisas intermediárias que não são de grande utilidade. O que eu quero é um ouvinte que acione apenas um certo limite depois que o usuário começar a digitar, ou algum tipo de estrutura, que espere no ouvinte antes de chamartriggerSearch
, e se outro evento for acionado antes dessa espera, cancela a si mesmo.