Я использую следующий код для выполнения поиска, когда пользователь вводит в 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
, и если другое событие запускается до этого ожидания, отменяет себя.