RecyclerView Item中EdieText使用addTextChangedListener文本内容监听器引起的EditText内容混乱

原因是因为setText方法中调用sendAfterTextChanged((Editable) text);导致的,所以需要先移除监听器,在setText之后设置监听器。
具体步骤、代码:
//1.判断EditText.getTag()获取标签是否为TextWatcher
//2.移除监听文本监听器
//3.EditText.setText设置输入框文本
//4.添加监听文本内容改变监听器和EditText.setTag设置标签
        //1.判断EditText.getTag()获取标签是否为TextWatcher,
        if (holder.etRealNum.getTag() instanceof TextWatcher) {
            //2.移除监听文本监听器
            holder.etRealNum.removeTextChangedListener((TextWatcher) holder.etRealNum.getTag());
        }
        //3.EditText.setText设置输入框文本
        holder.etRealNum.setText(info.getRealNum());
        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 (mClickListener != null) {
                    String number = editable.toString();
                    mClickListener.onItemClick(position, number);
                }
            }
        };
        //4.添加监听文本监听器和EditText.setTag设置标签
        holder.etRealNum.addTextChangedListener(watcher);
        holder.etRealNum.setTag(watcher);

分析如下:

TextView中的setText代码:

    @UnsupportedAppUsage
    private void setText(CharSequence text, BufferType type,
                         boolean notifyBefore, int oldlen) {
        mTextSetFromXmlOrResourceId = false;
        if (text == null) {
            text = "";
        }

        // If suggestions are not enabled, remove the suggestion spans from the text
        if (!isSuggestionsEnabled()) {
            text = removeSuggestionSpans(text);
        }

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值