EditView的监听者TextWatcher

在开发过程中,我们常常会对EditText里面输入的内容做一些限制,这是我们经常用到TextWatcher。

wsc_send_cost.addTextChangedListener(new TextWatcher() {

private String temp ;
@Override

public void onTextChanged(CharSequence s, int start, int before, int count) {

//这个方法是在Text改变过程中触发调用的,它的意思就是说在原有的文本s中,从start开始的count个字符替换长度为before的旧文本

//这里的s已经是输入后的内容,

dealPoint(s.toString(), wsc_send_min_needed, this);
}

@Override

public void beforeTextChanged(CharSequence s, int start, int count, int after) {

//这个方法是在Text改变之前被调用,它的意思就是说在原有的文本s中,从start开始的count个字符将会被一个新的长度为after的文本替换,注意这里是将被替换,还没有被替换。

//这里的s是输入前的内容,

temp = s.toString();

}


@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
if(s.toString().trim().length()<1){
return;
}
try{
//当内容发生改变,但改变后的内容不符合我们的规则,此时内容不发生变化并给出提示。
double minSendCost = Double.valueOf(s.toString().trim().replace(",", ""));
if(minSendCost>9999){
wsc_send_min_needed.removeTextChangedListener(this);
wsc_send_min_needed.setText(temp);
wsc_send_min_needed.addTextChangedListener(this);
wsc_send_min_needed.setSelection(temp.length());
//wsc_send_min_needed.setSelection(wsc_send_min_needed.getText().length());
ToastShow.showToast(WscSettingActivity.this, "配送费用不大于1万", 1000);

}
}catch(NumberFormatException e){
ToastShow.showToast(WscSettingActivity.this, "配送金额格式不正确!", 1000);
}
}
});

}

TextWatcher里面的三个方法,有点像生命周期,它们表示了EditText里面内容改变的过程。

使用TextWatcher时,有时会重新对EditText执行setText方法,此时要注意避免死循环。。。我这里在set时先移除监听,set完后再把监听补回去大哭

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值