我怎么可以做一些事情,0.5秒我的EditText后的文本改变了吗?我的、文本、事情、改变了

2023-09-05 08:46:16 作者:女人丶要靠自己

我使用的过滤一个EditText我的名单。我想过滤列表中的用户后的 0.5,第二个有完成打字的EditText 。我使用了 TextWatcher afterTextChanged 事件作此用途。但是,这一事件上升为EditText上每个字符的变化。

我应该怎么办?

解决方案

  editText.addTextChangedListener(
    新TextWatcher(){
        @覆盖公共无效onTextChanged(CharSequence中,诠释开始,诠释之前,诠释计数){}
        @覆盖公共无效beforeTextChanged(CharSequence中,诠释开始,诠释计数,诠释之后){}

        私人定时器定时=新的Timer();
        私人最终长延时= 500; //毫秒

        @覆盖
        公共无效afterTextChanged(最终可编辑S){
            timer.cancel();
            定时器=新的Timer();
            timer.schedule(
                新的TimerTask(){
                    @覆盖
                    公共无效的run(){
                        // TODO:做什么,你需要在这里(刷新列表)
                        //你可能需要使用runOnUiThread(Runnable的行动)的一些具体行动
                    }
                },
                延迟
            );
        }
    }
);
 

诀窍是取消并重新安排定时器每一次,当的EditText 文本得到改变。祝你好运!

I am filtering my list using an EditText. I want to filter the list 0.5 second after user has finished typing in EditText. I used the afterTextChanged event of TextWatcher for this purpose. But this event rises for each character changes in EditText.

引用的文本再加上修改文本颜色,为什么不行 求大佬

What should I do?

解决方案

editText.addTextChangedListener(
    new TextWatcher() {
        @Override public void onTextChanged(CharSequence s, int start, int before, int count) { }
        @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { }

        private Timer timer=new Timer();
        private final long DELAY = 500; // milliseconds

        @Override
        public void afterTextChanged(final Editable s) {
            timer.cancel();
            timer = new Timer();
            timer.schedule(
                new TimerTask() {
                    @Override
                    public void run() {
                        // TODO: do what you need here (refresh list)
                        // you will probably need to use runOnUiThread(Runnable action) for some specific actions
                    }
                }, 
                DELAY
            );
        }
    }
);

The trick is in canceling and re-scheduling Timer each time, when text in EditText gets changed. Good luck!

 
精彩推荐
图片推荐