我使用的RecyclerView
包含每个包含EditText
的项目。
我在ViewHolder构造函数的EditText中添加了TextWatcher
。此文本观察者呼叫:adapter.notifyItemChanged()
绑定视图时,我这样做:
edittext.setText("value");
因此,文字更改事件被解雇了,但我不想要我得到
java.lang.IllegalStateException:无法调用此方法 RecyclerView正在计算布局或滚动
我希望只有当用户手动更改文本时才会触发该事件。有没有办法区分这些事件?
我可以删除并在每次视图绑定时再次添加TextWatcher
,但我想找到另一个更好的解决方案。
答案 0 :(得分:3)
您可以在setText()调用之后立即绑定视图,而不是在ViewHolder构造函数中设置TextWatcher,从而避免遇到您遇到的问题。
所以:
edittext.setText("value");
edittext.setTextWatcher(new TextWatcher(..
这样TextWatcher不会立即触发事件,因为在设置初始值时它还不存在。
答案 1 :(得分:1)
尝试在editext.setText(" value")之后的绑定方法中附加文本观察器