Edittext 监听输入完成

来源:互联网 发布:数据共享交换 实现方式 编辑:程序博客网 时间:2024/05/17 06:08

       最近项目中有个需求,更改标题判断输入结束调用API更改标题。开始直接设置的TextWatcher,然后在afterTextChanged

事件里调用API更改标题,然后发现每输入一个字都会调用一次API并提示操作成功,体验十分不好。

  后面尝试了多种方法后用handler.postDelayed解决问题

 新建一个  Runnable 

 private Runnable delayRunnable = new Runnable() {    @Override    public void run() {            updateName(title);           }};
然后在Editext的TextWatcher中的onTextChanged方法里判断Runnable若不为空就移除,在afterTextChanged中延迟启动Runnable
private TextWatcher watcher = new TextWatcher() {    @Override    public void onTextChanged(CharSequence s, int start, int before, int count) {        if(delayRun!=null){            handler.removeCallbacks(delayRun);        }    }    @Override    public void beforeTextChanged(CharSequence s, int start, int count,                                  int after) {    }    @Override    public void afterTextChanged(Editable s) {        handler.postDelayed(delayRun, 2000);    }};

0.0

1 0
原创粉丝点击