gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 16:18:44 25 4
gpt4 key购买 nike

我不得不用 EditText 重新创建 AutoCompleteTextView 的功能(出于不同的原因*,这可能是另一个问题,但我现在正沿着这条路走下去)。

每当我的 EditText 上的文本发生变化时,通过发出我的 api 调用,我的所有功能都可以正常工作。我通过使用 TextWatcher(覆盖 afterTextChanged 方法)来做到这一点。

有没有一种方法可以控制监听器触发调用的方式?

这是我的用例:

我正在搜索加利福尼亚

我检查了一分钟。长度为 3,然后开始触发调用。所以当前发送的 API 调用数 = 8

  1. 卡尔
  2. 卡利
  3. 加州
  4. 加州
  5. 加州
  6. 加州
  7. 加利福尼亚
  8. 加州

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

它不必非常准确。在这里和那里发生额外的事件是完全可以接受的。我希望将触发的事件数量从 8 个减少到至少 3 个。

I wanted to show the autocomplete results in a different listview vs. the pop-up window that comes alongside the auto-complete textview.

最佳答案

尝试以下 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

}
};

关于java - 在 TextWatcher for Android 中控制事件的触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20987744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com