ユーザーが 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) {
}
});
ただし、これは、ユーザーが単語を入力しているときに複数回トリガーされます。つまり、ユーザーが「hello」と入力すると、このコードは値 (「h」、「he」、「hel」、「hell」、「hello」) で 5 回トリガーされます。通常はこれで問題ありませんが、トリガーされた検索はコストがかかるため、あまり役に立たない中間検索でリソースを浪費したくありません。triggerSearch
私が欲しいのは、ユーザーが入力を開始した後に特定のしきい値のみをトリガーするリスナー、または を呼び出す前にリスナーで待機し、その待機前に別のイベントがトリガーされた場合、それ自体をキャンセルする何らかのフレームワークです。