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);
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐