listView中item带编辑框,输入、数据错乱等问题

  1. 在项目中,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

也希望各位能给出自己的意见!!!!

猜你喜欢

转载自blog.csdn.net/u013346208/article/details/79391932