【发布时间】:2012-04-30 07:36:08
【问题描述】:
当用户输入 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”,此代码将触发 5 次值(“h”、“he”、“hel”、“hell”、“hello”)。通常,这会很好,但是触发搜索很昂贵,我不想将资源浪费在没有太大用处的中间搜索上。我想要的是在用户开始输入后仅触发某个阈值的侦听器,或者是某种框架,在调用triggerSearch 之前在侦听器中等待,如果在该等待之前触发了另一个事件,则会自行取消。
【问题讨论】: