edittext的监听事件

目前在开发过程中,遇见一个这样的需求,需要手动输入数据,获取到输入的数据之后,需要根据输入的内容进行请求,请求成功之后弹出一个列表,根据列表,选择然后显示到编辑框中,

本来以为只要添加一个

TextWatcher
监听就OK了,但是遇见了一个,选中之后,由于 edittext的内容又发生变化,导致弹框一直不停的出现,陷入一个循环。

/**产品名称的编辑的监听*/
mWatcher = 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) {

    }

    @Override
    public void afterTextChanged(final Editable s) {
        if (s == null || StringUtil.isEmpty(s.toString())) {
            return;
        }

        if (delayRun != null) {
            //每次editText有变化的时候,则移除上次发出的延迟线程
            handler.removeCallbacks(delayRun);
        }
        /**延迟线程,看是否还有下一个字符输入*/

        delayRun = new Runnable() {

            @Override
            public void run() {
                //在这里调用服务器的接口,获取数据

                getEveryProductListSecond("", "", s.toString() + "");

            }
        };
        //延迟800ms,如果不再输入字符,则执行该线程的run方法
        handler.postDelayed(delayRun, 800);

    }
};
editTextProductNameRight.addTextChangedListener(mWatcher);

解决办法: 在设置数据的时候,需要先将监听移除,在设置之后 再 进行添加.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值