个人理解,android 出于对性能的考虑,对 listview 中的控件进行了重复利用,他只缓存了屏幕可见范围内的数据。当你滚动listview的时候,原来的Item被隐藏起来了,但是他的组件仍然被利用。所以,你会看到之前出于选中状态的Item会重复出现的问题。
那么我们应该怎么做呢?
假设listview中的某一项被选中了。其中的某个子view变为了VISIBLE。当你滚动listview的时候,要确保的是组件在初始化的时候需要回到他的初始状态。即,让这个变为VISIBLE的子view,在绑定数据之前,回到原来的GONE的状态。