今天做项目,一个界面中有多个editText,由于实现的逻辑基本相同,所有如果为每一个editText都写一个监听,会显得比较麻烦,
于是,就把editText的监听事件写到一个类里面,通过构造方法,把需要操作的editText传进来
代码如下:
/** * 重构editText监听事件 */ public class MyTextWatcher implements TextWatcher { private EditText editText; public MyTextWatcher(EditText editText) { this.editText = editText; } /** * 文本输入改变之前调用(还未改变) */ @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } /** * 文本改变过程中调用(文本替换动作) */ @Override public void onTextChanged(CharSequence s, int start, int before, int count) { String onlineRate = String.valueOf(s); if (!onlineRate.equals("")) { Integer onlineRates = Integer.parseInt(onlineRate); if (100 < onlineRates) { editText.setText("100"); //将editText的光标移动到文本最后位置 editText.setSelection(editText.getText().length()); } } } /** * 文本改标之后调用(文本已经替换完成) */ @Override public void afterTextChanged(Editable s) { } }
这样就已经完成了,接下来就是调用了,把你的editText传进去就可以了
editText.addTextChangedListener(new MyTextWatcher(editText));