在RecyclerView的子布局中使用EditText,在第一项输入数据滚动出可视界面后,再次回到第一项后,输入的数据没有了。我想应该是RecyclerView回收了,而数据没有显示在界面上。根本原因是因为 EditText 的重新绘制!当重绘之后该回调函数没有获取到填充的数据,从而导致了数值都被置为 0 了。
if(holder.et_liuyan.getTag() instanceofTextWatcher) {
holder.et_liuyan.removeTextChangedListener((TextWatcher)holder.et_liuyan.getTag());
}
TextWatcher watcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2){
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
confirmlist.get(position).setMessage(editable.toString());
}
};
holder.et_liuyan.addTextChangedListener(watcher);
holder.et_liuyan.setTag(watcher);