我使用的是一个RecyclerView
包含每个EditText
的项。
我在viewholder构造函数的edittext中添加了一个TextWatcher
。此文本观察程序调用:adapter.notifyItemChanged()
绑定视图时,我会:edittext.setText("value");
所以文本更改事件被触发,但我不想因为我得到
java.lang.IllegalStateException:在
RecyclerView正在计算布局或滚动
我希望仅当用户手动更改文本时才触发该事件。有办法区分这些事件吗?
每次绑定视图时,我都可以删除并再次添加TextWatcher
,但我希望找到另一个更好的解决方案。
最佳答案
不要在viewHolder构造函数中设置textWatcher,可以在settext()调用之后绑定视图时这样做,避免遇到问题。
所以:
edittext.setText("value");
edittext.setTextWatcher(new TextWatcher(..
这样,TextWatcher不会立即触发事件,因为在设置初始值时它还不存在。