Android ListView删除行为

时间:2013-08-01 11:52:05

标签: android listview infinite-scroll listadapter

我需要修改默认的ListView行为,这样当一个项目被删除并且适配器被调用notifyDataSetChanged()时,我不想拉动后面的项目,而是想拉出前面的项目(包括用户拥有的隐藏项目)已经滚动过去了)。最终目标是无限可滚动ListView,它会因为内存保护原因而破坏旧视图,然后继续前进。我想知道的是:

  1. 如何修改此行为,或......
  2. 如果ListView的设计已足够聪明,如果我使用像Picasso或Universal Image Loader这样的库,或用虚拟单色`Drawable替换所有隐藏的视图,它可以处理数百或数千个滚动项目。
  3. 先谢谢了!对于无尽的卷轴,我希望做类似herehere的事情。

1 个答案:

答案 0 :(得分:1)

我建议不要与ListView作战。 ListView已经过高度优化以节省内存。它不会为列表中的每个项目增加一个视图,而是只会填充需要填充屏幕的视图,然后在列表滚动时回收这些视图。 2010年有very good Google I/O lecture解释了ListView的工作原理。您应该注意这一点并重新思考您的方法。

此外,您可以将通用图像加载器与ListView一起使用。很多人都有这个网站上有很多例子。最常见的模式是“懒惰列表”,您可以阅读更多关于它是否谷歌它(或这里的searc)。基本上你只需要根据需要加载东西并销毁你不需要的东西。这允许您提供长列表,而无需在托管位图和其他内容上使用所有内存。