RecycleView里面包含Edittext,当内容改变后,滑动列表,数据错乱得问题解决

RecycleView里面包含Edittext,当内容改变后,滑动列表,数据错乱的问题解决

核心代码如下:亲测可用

public class ConfirmSignAdapter extends BaseQuickAdapter<ConfirmSignBean, BaseViewHolder> {

    public ConfirmSignAdapter(int layoutResId) {
        super(layoutResId);
    }

    @Override
    protected void convert(BaseViewHolder helper, ConfirmSignBean item) {

        EditText item_editText = helper.getView(R.id.et_confirm_num);
        //        通过tag判断当前editText是否已经设置监听,有监听的话,移除监听再给editText赋值
        if (item_editText.getTag() instanceof TextWatcher){
            item_editText.removeTextChangedListener((TextWatcher) item_editText.getTag());
        }
        //必须在判断tag后给editText赋值,否则会数据错乱
        item_editText.setText(item.getConfirmSignNum());
        TextWatcher watcher = new TextWatcher() {
            @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 editable) {
                if (!TextUtils.isEmpty(editable)) {
                    item.setConfirmSignNum(editable.toString());
                }
            }
        };
        //        给item中的editText设置监听
        item_editText.addTextChangedListener(watcher);
//        给editText设置tag,以便于判断当前editText是否已经设置监听
        item_editText.setTag(watcher);
        helper.setText(R.id.tv_goods_code, item.getGoodsCode())
                .setText(R.id.tv_goodname, item.getGoodsName())
                .setText(R.id.tv_goods_in_num, item.getGoodsInNum())
                .setText(R.id.tv_goods_out_num, item.getGoodsOutNum());
//                .setText(R.id.et_confirm_num, item.getGoodsOutNum());
    }


}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章