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());
    }


}

 

 

 

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