Как избежать множественных срабатываний EditText во время ввода пользователем?

Я использую следующий код для выполнения поиска, когда пользователь вводит EditText:

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

Однако это срабатывает несколько раз, когда пользователь вводит слово. То есть, если пользователь набирает «привет», этот код сработает 5 раз со значениями («h», «he», «hel», «hell», «hello»). Обычно это было бы хорошо, но триггерный поиск стоит дорого, и я не хочу тратить ресурсы на промежуточные поиски, которые бесполезны. Я хочу либо прослушиватель, который запускает только определенный порог после того, как пользователь начинает печатать, либо какой-то фреймворк, который ожидает в прослушивателе перед вызовом triggerSearch, и если другое событие запускается до этого ожидания, отменяет себя.

22
задан apoorv020 18 April 2012 в 19:59
поделиться