关于输入框输入内容后,结束输入进行操作的事件监听

今天有个需求是在客户输入内容后,输入完成的时候,进行一个动作显示一个列表让他可以选择

一开始把注重点放在了输入内容这块,准备用个TextWatcher来进行输入的监听,然后再判断输入内容达要求后,请求接口并在成功的时候展示列表。

结果在做完了TextWatcher做完之后,突然注意到了,这个需求说的是输入内容后,并不需要在输入过程中展示列表,而且有修改这个操作在,如若把所有修改都当做一次输入,就会怎么了很多次接口请求

意识到自己的坑之后~

把注重点放在了输入内容  “后”,首先输入框EditText要输入内容必然会获取焦点或失去焦点

所以要知道是否结束输入,只要监听焦点变化(onFocusChangeListener)则可,而开始输入时获取焦点,结束输入时失去焦点

然后再判断当前为结束输入的时候,顺带进行一次输入内容的判断就可以,在用户输入结束,并输入了要求内容的时候,进行接口请求并展示列表

类似这样:

edit_billMoney.setOnFocusChangeListener(new View.OnFocusChangeListener() {
//设置edit_billMoney的焦点监听事件
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (!hasFocus) {
//当焦点变化后hasFocus(是否有焦点)为没有时,则为结束输入
            String msg = edit_billMoney.getText().toString().trim();
            if (!TextUtils.isEmpty(msg) && Integer.valueOf(msg) != 0) {
                if (bill_money.compareTo(msg) != 0) {
                    bill_money = msg;
                    if (!TextUtils.isEmpty(shengyuedu))
                        mPresenter.requestPassageWay(mContext, address_id, bill_money, shengyuedu);
                }
            }
        }
    }
});

悲报是,我之所以写这个是因为需求改动后,这个被解决的问题随着被改动的需求,就这么消失了~

说来也是好笑,当我开心的说出“那个问题我想到更好的解决方式了”的时候

对方淡定的告诉我 “不用解决了,问题本身就没有了~”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章