RecyclerView里有多个EditText输入框数据错乱问题

599 阅读1分钟

RecyclerView包含输入框的时候,添加删除操作会导致数据错乱问题。

  • 原因在于item的复用导致的数据错乱,在RecyclerView.Adapter中做标记
1.如果有,先移除掉TextWatcher
if (et.getTag() != null &&et.getTag() instanceof TextWatcher) {
    et.removeTextChangedListener((TextWatcher)et.getTag());
}
2.再设置EditTex的值
et.setText(item.getUrl());
TextWatcher textWatcher = 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())) {
           ...
        }
    }
};
3.添加TextWatcher 设置tag
et.addTextChangedListener(textWatcher);
et.setTag(textWatcher);