TextWatcher fieldValidatorTextWatcher = new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {//表示最终内容
Log.d(“afterTextChanged”, s.toString());
}
@Override
public void before TextChanged(
CharSequence s, int start/*开始的位置*/, int count/*被改变的旧内容数*/, int after/*改变后的内容数量*/)
{
**//这里的s表示改变之前的内容,通常start和count组合,可以在s中读取本次改变字段中被改变的内容。
而after表示改变后新的内容的数量。
//s----未改变之前的内容
//start--内容被改变的开始位置
//count--原始文字被删除的个数
//after--新添加的内容的个数
//---------start和count结合从s中获取被删除的内容-------**
String deleText = s.toString().substring(start, start + count);
}
@Override
public void onTextChanged(
{
**//这里的s表示改变之后的内容,通常start和count组合,可以在s中读取本次改变字段中新的内容。
而before表示被改变的内容的数量。
//s--改变之后的新内容
//start--内容被改变的开始位置
//before--原始文字被删除的个数
//count--新添加的内容的个数
//---------start和count结合从s中获取新添加的内容-------**
String addText = s.toString().substring(start, start + count);
}
};
实例:recyclerview
@Override
public void onBindViewHolder(final MyViewHolder holder,final int position) {
//添加editText的监听事件
holder.name.addTextChangedListener(new TextSwitcher(holder));
//通过设置tag,防止position紊乱
holder.name.setTag(position);
}
//自定义EditText的监听类
class TextSwitcher implements TextWatcher {
private MyViewHolder mHolder;
public TextSwitcher(MyViewHolder mHolder) {
this.mHolder = mHolder;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//改变之前
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//文本改变
}
@Override
public void afterTextChanged(Editable s) {
//用户输入完毕后,处理输入数据,回调给主界面处理
SaveEditListener listener= (SaveEditListener) mContext;
//mContext这里必须是activity不能是 getApplicationContext
if(s!=null){
listener.SaveEdit(Integer.parseInt(mHolder.c_name_et.getTag().toString()),s.toString());
}
}
}
新手上路,请多多包涵!谢谢