RecyclerView包含输入框的时候,添加删除操作会导致数据错乱。记一下。在RecyclerView.Adapter做处理
先移除掉TextWatcher
if (((MyViewHolder) viewHolder).et_url.getTag() instanceof TextWatcher) { ((MyViewHolder) viewHolder).et_url.removeTextChangedListener( (TextWatcher) ((MyViewHolder) viewHolder).et_url.getTag()); }
//再设置EditTex的值
((MyViewHolder) viewHolder).et_url.setText(item.getUrl()); TextWatcher urltextWatcher = 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) { if (editable != null && !TextUtils.isEmpty(editable.toString())) { String url = editable.toString(); item.setUrl(url); } } };
//添加TextWatcher 设置tag
((MyViewHolder) viewHolder).et_url.addTextChangedListener(urltextWatcher); ((MyViewHolder) viewHolder).et_url.setTag(urltextWatcher);