在TextWatcher for Android中控制事件的触发



我不得不用EditTexts重新创建AutoCompleteTextViews的功能(出于不同的原因*&这可能是另一个问题,但我现在已经走上了这条路)。

每当EditText上的Text发生更改时,我都会发出api调用,从而使我的所有功能正常工作。我通过使用TextWatcher(覆盖afterTextChanged方法)来实现这一点。

有没有一种方法我可以控制,与听众之间的通话方式?

这是我的用例:

我正在搜索加利福尼亚

我检查了一下最短的3个,然后开始接听电话。因此当前发送的API调用数=8个

  1. Cal
  2. 卡利
  3. Calif
  4. Califo
  5. Califor
  6. Californ
  7. 加利福尼亚
  8. 加利福尼亚

如果我收到新的文本更改,有没有办法取消已关闭的事件?因此,当用户键入California时,我会等到出现没有输入新文本的间隙,然后调用我的API?

它不一定要非常准确。这里和那里的额外事件火灾是完全可以接受的。我希望将事件数量从8个减少到至少3个。

我想在不同的列表视图中显示自动完成结果,而不是自动完成文本视图旁边的弹出窗口。

尝试以下TextWatcher:

TextWatcher t = new TextWatcher() {
long lastChange = 0;
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
if (s.length() > 3) {
new Handler().postDelayed(new Runnable() {
public void run() {
if (System.currentTimeMillis() - lastChange >= 300) {
//send request
}
}
}, 300);
lastChange = System.currentTimeMillis();
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
};

相关内容

  • 没有找到相关文章

最新更新