今天有个需求是在客户输入内容后,输入完成的时候,进行一个动作显示一个列表让他可以选择
一开始把注重点放在了输入内容这块,准备用个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);
}
}
}
}
});
悲报是,我之所以写这个是因为需求改动后,这个被解决的问题随着被改动的需求,就这么消失了~
说来也是好笑,当我开心的说出“那个问题我想到更好的解决方式了”的时候
对方淡定的告诉我 “不用解决了,问题本身就没有了~”