最近有需求录入数据中需要支持录入多组数据,用RecyclerView+editText来实现,出现在列表下拉超过一屏之后,会修改上一屏的问题。特此记录。
最初的代码如下:
![](https://img.haomeiwen.com/i5327920/78857f28b6bb28d3.png)
后续经过日志分析发现,editText为addTextChangedListener不是set,所以如果RecyclerView复用的时候会add进去两个。我这里测试是第8个与第1个公用View,所以在给8个add的时候,同时持有第一个和第8个的,第8个EditText修改也会回调第一个的TextWatcher。所以写了如下方法,在addTextChange时先remove掉以前的。
![](https://img.haomeiwen.com/i5327920/d78401b0255de6f3.png)
之后经过测试问题还是没有解决,经过日志分析。发现在滑动到第8个的时候还是会先回调第一个的TextWatcher。所以把addTextChangeListener放在setValue之前。代码如下
![](https://img.haomeiwen.com/i5327920/cebed7d3a045fd37.png)
完美解决。
注:代码中的editData为自定义View。
以上仅为小白个人理解。
网友评论