在很久之前帮别人解决过一个列表中item有EditText,因为其他操作刷新了Adapter,造成了EditText中数据发生了错乱,当时怎么写的已经忘记了。不过现在又碰到了这个问题,就把它记录下来。
其实这个问题解决办法不止一种:
1、比较暴力的解决办法,就是不让RecycleView进行复用
比较简单就是在onBindViewHolder()中holder.setIsRecyclable(false);这种做法在数据量比较少的情况下可以使用,在数据量大了那就呵呵了....
当然了如果数据量不大可以采用这个办法。
2、这一种就比较优雅了,先把重要代码贴出来
这个做法实际上就在onBindViewHolder()中判断EditText是否获取了焦点,只有在获取焦点了在进行内容的改变。
最好是在item布局中EditText的父级控件中找一个,设置成
android:focusable="true"
android:focusableInTouchMode="true"
确保在开始的时候EditText就不获取焦点。
内容比较简单,希望对您有所帮助!!!