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