我需要修改默认的ListView行为,这样当一个项目被删除并且适配器被调用notifyDataSetChanged()
时,我不想拉动后面的项目,而是想拉出前面的项目(包括用户拥有的隐藏项目)已经滚动过去了)。最终目标是无限可滚动ListView
,它会因为内存保护原因而破坏旧视图,然后继续前进。我想知道的是:
答案 0 :(得分:1)
我建议不要与ListView
作战。 ListView
已经过高度优化以节省内存。它不会为列表中的每个项目增加一个视图,而是只会填充需要填充屏幕的视图,然后在列表滚动时回收这些视图。 2010年有very good Google I/O lecture解释了ListView
的工作原理。您应该注意这一点并重新思考您的方法。
此外,您可以将通用图像加载器与ListView
一起使用。很多人都有这个网站上有很多例子。最常见的模式是“懒惰列表”,您可以阅读更多关于它是否谷歌它(或这里的searc)。基本上你只需要根据需要加载东西并销毁你不需要的东西。这允许您提供长列表,而无需在托管位图和其他内容上使用所有内存。