我正在尝试显示View
我从适配器创建的所有 s 的动画。当我向下滚动时,它会正确显示动画,但是当我向上滚动时,我会看到这些View
s 重新创建并再次显示动画。然后,当我向下滚动时,它再次发生。
我的假设是View
从适配器创建 a 的机制是将其加载View
到内存中;只是View
现在屏幕上的 s 组(但上方和下方的视图不会加载到内存中)。当我滚动到这些视图时,这些将再次加载,对吗?
有没有办法解决这个问题?
PS:对不起我的英语,希望你能理解我的问题。
我正在尝试显示View
我从适配器创建的所有 s 的动画。当我向下滚动时,它会正确显示动画,但是当我向上滚动时,我会看到这些View
s 重新创建并再次显示动画。然后,当我向下滚动时,它再次发生。
我的假设是View
从适配器创建 a 的机制是将其加载View
到内存中;只是View
现在屏幕上的 s 组(但上方和下方的视图不会加载到内存中)。当我滚动到这些视图时,这些将再次加载,对吗?
有没有办法解决这个问题?
PS:对不起我的英语,希望你能理解我的问题。
我的假设是从适配器创建视图的机制是将视图加载到内存中;只是现在屏幕上的一组视图(但上面和下面的视图没有加载到内存中)
这有点正确:aListView
不会尝试可视化任何(至少部分)不可见的数据。它还“回收”视图,这意味着当前未用于向用户呈现数据并且与下一个数据项具有相同“类型”的任何视图都可以被重用。
因此,您不应依赖持久化数据或对特定视图的存在做出任何假设。相反,使用与视图分开的东西;例如,您正在可视化的数据集。
很多时候,您将提供一个 POJO 列表给 aBaseAdapter
或ArrayAdapter
. 您可以简单地向 POJO 添加一个布尔值,指示它是否应该动画,并在该特定项目的动画完成时更改它。或者,您可以在单独的集合中跟踪这些值(如果您处理的Cursor
是数据源而不是 POJO,这可能是更直接的方法)。