所以我对组成我的 ListView 的不同部分有疑问。我将它们放入 ArrayList 并使用自定义 ArrayAdapter 连接到 ListView,这是我以前做过的,所以我不相信那里有问题。最初,列表似乎以正确的顺序排列,但随后我将向下滚动列表,然后内容将以错误的顺序加载。然后我向上滚动,一切都混乱了。有没有人遇到过这个?
谢谢-杰克
所以我对组成我的 ListView 的不同部分有疑问。我将它们放入 ArrayList 并使用自定义 ArrayAdapter 连接到 ListView,这是我以前做过的,所以我不相信那里有问题。最初,列表似乎以正确的顺序排列,但随后我将向下滚动列表,然后内容将以错误的顺序加载。然后我向上滚动,一切都混乱了。有没有人遇到过这个?
谢谢-杰克
是的,您的问题与 List 重用每一行的视图这一事实有关。假设您的列表可以看到 5 个项目,但您的 ListAdapter 中有 15 个项目。Android 将为您的行视图创建 5 + 1 个实例,而不是 15 个。列表中的每一行一个 + 1 表示可以看到顶部和底部的一半。当一行移出可见区域时,列表将回收该视图实例以用于另一行,而不是创建一个新的。如果您每次都没有正确地重置所有用户界面组件,那么您将获得来自其他行的工件显示。您必须确保每次将数组列表中的对象中的数据绑定到您每次设置的每个字段的视图。
有关此内容的更好描述,请参见