Android Adapter多个getView

xge*_*86x 8 android adapter

我已经阅读了多次调用getView的问题和所有答案.但是,我找不到解决我问题的方法.

我有一个列表,其中行有两种状态:读取或不读取.好吧,我想第一次看到的项目有不同的颜色,当我滚动列表时,他们将颜色改为"读状态".

为了做到这一点,在我的适配器的getView方法中,当绘制该项的行时,我设置了一个字段isRead.但问题如下:由于方法getView被多次调用,字段被标记为已读,当列表显示在屏幕中时,它看起来好像已经被读取了.

有什么想法解决这个问题吗?

谢谢

Cod*_*ile 14

我假设你的意思是getView多次请求相同的视图.

ListView这样做是因为它需要根据不同的原因(滚动条大小,布局等)获取视图的测量值

通常不使用listview上的"wrap_content"属性可以避免此问题.

除此之外,使用getView确定是否已显示视图只是一个坏主意.ListView有很多优化,每个行调用getView命令,所以没有办法知道会发生什么,你的应用程序将开始显示奇怪的行为.

尽量避免视图和除了视图概念之外的数据之间的任何关系作为该数据的显示.

相反,在listactivity中有一些工作线程或事件监听器观察列表中的项目已显示给用户的列表,更新数据,并在适配器上调用dataSetChanged.