listView中item带编辑框,输入、数据错乱等问题
- 在项目中,listview控件使用率是很高的,自然的,viewHolder就是必备了,这个view的复用,在某些情况下,会引发其他问题,由于复用机制问题(顶部滑出的itemView,会被底部滑出的复用),所以,如果是存在输入框的情况下,输入一行内容,其他复用的对应行,也会相应的填充下同样的内容,如下:
2.同样,我们尝试着删除输入项的内容,也会发现被复用的item内容也被删除了
我们还可以看看源码:
这里的输入监听,不是对象,是一个集合,这也是为什么输入的时候,会更改其他输入框的原因之一,通过holder.position找对应的itemView和itemData,这样才不会有问题
3.知道原因的情况下,我们针对holder做出相应的改动,给每一个holder加上对应的下标选项,如下图:
4.下标加上了,如何使用呢? 既然是输入的时候出的问题,那么,我们在输入监听里面也要做相应的处理,首先传入对应的holder,如图:
5.为了避免删除的时候,删除到其他item内容,我们需要加入自己的输入监听,并针对holder的下标进行值的获取和删除,如下处理:
6.绑定也绑定好了,如何给对应的集合赋值呢? 还是通过holder找到对应的集合下标进行修改,如图:
注意:最重要的是,一定要给holder里面的position赋值(步骤五),否则,问题还是会有的。
步骤完成之后,就不会有问题了:
Demo地址:
https://github.com/otherface/ListViewEditTextDemo.git
也希望各位能给出自己的意见!!!!