【发布时间】:2020-08-07 18:05:59
【问题描述】:
我正在使用MaterialChipsInput(尽管我使用的是什么组件并不重要)。我有以下代码:
chipsInput.addChipsListener(new ChipsInput.ChipsListener() {
@Override
public void onChipAdded(ChipInterface chip, int newSize) {}
@Override
public void onChipRemoved(ChipInterface chip, int newSize) {}
@Override
public void onTextChanged(CharSequence text) {
if (text != null && text.toString().contains(",") && text.toString().length() > 1) {
final String tag = Utils.capitalizeFully(text.toString().replaceAll(",","").trim());
if (!(tag.isEmpty())) {
chipsInput.addChip(tag, null);
}
}
}
});
基本上,每次用户输入逗号时,它都会向chipsInput 添加标签。问题是用户必须以逗号结尾才能将其添加为芯片。我想添加一个 5 秒的计时器,如果 5 秒后没有变化,它将将该芯片添加到chipsInput。最简单的方法是什么?
【问题讨论】:
-
Thread.sleep(5000)in try catch -
@AniketSahrawat 这行不通,因为
onTextChanged将再次被调用,而您将再次睡觉。稍微改了一下标题,这样更容易理解。 -
这需要在不同的线程中执行并检查输入。但是,如果您不熟悉并发,请不要这样做,因为这样做弊大于利。
-
我确实了解线程是如何工作的。问题是
ChipsInput是第三方,所以我不是处理onTextChanged执行的人。我重写了该方法,并且不知何故我需要关注用户的更改。 -
使用
runnable和Handler