Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android EditText的问题';关于文本更改侦听器_Android_Kotlin - Fatal编程技术网

Android EditText的问题';关于文本更改侦听器

Android EditText的问题';关于文本更改侦听器,android,kotlin,Android,Kotlin,在我的Recyclerview的适配器类中,我做了如下工作: holder.mEdtDescription.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(p0: Editable?) { } override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { }

在我的Recyclerview的适配器类中,我做了如下工作:

holder.mEdtDescription.addTextChangedListener(object : TextWatcher {
    override fun afterTextChanged(p0: Editable?) {
    }

    override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
    }

    override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
        listener.onDeleteOrDescribe(position, "" + holder.mEdtDescription.text.toString(), "describe")
    }
})

holder.mIvDelete.setOnClickListener {
    listener.onDeleteOrDescribe(position, "", "delete")
}
mEdtDescription
是编辑文本

从回收器中删除某些值时,我的适配器调用方法
ondeleterdescripe
。 不幸的是,与此同时,ontextchange也在调用

删除soemthing时,如何避免调用
onTextChanged

希望你明白了

根据解决方案,我已尝试禁用textWatcher,如下所示:

val textWatcher: TextWatcher = object : TextWatcher {
        override fun afterTextChanged(p0: Editable?) {
        }

        override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
        }

        override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
            ToastUtil.displayShortDurationToast(mContext,"called")
            listener.onDeleteOrDescribe(
                position,
                "" + holder.mEdtDescription.text.toString(),
                "describe"
            )
        }
    }
    holder.mEdtDescription.addTextChangedListener(textWatcher)

    holder.mIvDelete.setOnClickListener {
        //listener.onDeleteStep(position)
        holder.mEdtDescription.removeTextChangedListener(textWatcher)
        listener.onDeleteOrDescribe(position, "", "delete")
        holder.mEdtDescription.addTextChangedListener(textWatcher)
    }

但是,仍在调用onTextChange():(

您可以尝试暂时禁用TextWatcher:

val textWatcher :  TextWatcher = object : TextWatcher {
    override fun afterTextChanged(p0: Editable?) {
    }

    override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
    }

    override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
        listener.onDeleteOrDescribe(position, holder.mEdtDescription.text.toString(), "describe")
    }
}

holder.mEdtDescription.addTextChangedListener(textWatcher)

holder.mIvDelete.setOnClickListener {
    holder.mEdtDescription.removeTextChangedListener(textWatcher)
    listener.onDeleteOrDescribe(position, "", "delete")
    holder.mEdtDescription.addTextChangedListener(textWatcher)
}

但是,当我更改EditText内容时应该调用它,在这种情况下,当我更改描述时,它将不起作用。它也不起作用。我已在内部禁用并启用了它。当触发mIvDelete onClickListener时,onTextChanged()将方法被调用?即使TextChangedListener之前已被删除?是的,先生,我已通过在内部制作toast进行了检查。