如何区分 TextWatcher 中的用户输入和 setText 方法?
How differentiate between user input and setText method in TextWatcher?
我使用的 RecyclerView
包含的项目每个都包含 EditText
。
我在 ViewHolder 构造函数中的这个 EditText 中添加了一个 TextWatcher
。此文本观察器调用:adapter.notifyItemChanged()
绑定视图时,我这样做:
edittext.setText("value");
所以文本更改事件被触发,但我不想要那个,因为我得到了
java.lang.IllegalStateException: Cannot call this method while
RecyclerView is computing a layout or scrolling
我希望仅当用户手动更改文本时才触发该事件。有没有办法区分这些事件?
我可以在每次绑定视图时删除并再次添加 TextWatcher
,但我想找到另一个更好的解决方案。
尝试在绑定方法中附加文本观察器,就在 editext.setText("value")
之后
无需在 ViewHolder 构造函数中设置 TextWatcher,您可以在调用 setText() 后立即绑定视图时执行此操作,从而避免您遇到的问题。
所以:
edittext.setText("value");
edittext.setTextWatcher(new TextWatcher(..
这样 TextWatcher 就不会立即触发事件,因为在设置初始值时它还不存在。
我使用的 RecyclerView
包含的项目每个都包含 EditText
。
我在 ViewHolder 构造函数中的这个 EditText 中添加了一个 TextWatcher
。此文本观察器调用:adapter.notifyItemChanged()
绑定视图时,我这样做:
edittext.setText("value");
所以文本更改事件被触发,但我不想要那个,因为我得到了
java.lang.IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling
我希望仅当用户手动更改文本时才触发该事件。有没有办法区分这些事件?
我可以在每次绑定视图时删除并再次添加 TextWatcher
,但我想找到另一个更好的解决方案。
尝试在绑定方法中附加文本观察器,就在 editext.setText("value")
之后无需在 ViewHolder 构造函数中设置 TextWatcher,您可以在调用 setText() 后立即绑定视图时执行此操作,从而避免您遇到的问题。
所以:
edittext.setText("value");
edittext.setTextWatcher(new TextWatcher(..
这样 TextWatcher 就不会立即触发事件,因为在设置初始值时它还不存在。