0

我需要修改默认的 ListView 行为,以便在删除项目并且notifyDataSetChanged()调用适配器时,而不是向上拉后面的项目,我想向下拉较早的项目(包括用户已经滚动过去的隐藏项目)。最终目标是无限滚动ListView,出于内存保护的原因销毁旧视图,然后继续运行。我想知道的是:

  1. 如何修改此行为,或者...
  2. 如果ListView' 的设计已经足够聪明,如果我使用像 Picasso 或 Universal Image Loader 这样的库,或者用虚拟的单色 `Drawable 替换所有隐藏视图,它可以处理成百上千的滚动项目。

先谢谢了!对于无尽的卷轴,我希望做一些类似于herehere的事情。

4

1 回答 1

1

我建议不要与ListView. ListView已经高度优化以节省内存。它不会为列表中的每个项目扩展视图,而是仅扩展所需数量的视图以填满屏幕,然后在列表滚动时回收这些视图。2010 年有一个非常好的 Google I/O 讲座,它解释了如何ListView工作。你应该注意这一点并重新考虑你的方法。

您也可以将通用图像加载器与ListView. 很多人都有,而且这个网站上有很多例子。最常见的模式是“惰性列表”,您可以通过谷歌搜索了解更多信息(或在此处搜索)。基本上你只加载你需要的东西并销毁你不需要的东西。这允许您提供长列表,而无需将所有内存用于托管位图和其他内容。

于 2013-08-01T13:05:02.310 回答