我使用的是一个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不会立即触发事件,因为在设置初始值时它还不存在。

10-08 08:59