Android EditText的问题';关于文本更改侦听器
在我的Recyclerview的适配器类中,我做了如下工作: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) { }
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进行了检查。