我想知道如何使用CWAC的无限适配器来处理非常大的列表。
我主要关心的是内存管理。如果我缓存数千个项目,我将最终出现内存不足异常。那么我该如何处理缓存呢?我可以清除之前的条目吗?
据我了解,无限的适配器只会在我们向下滚动列表时触发其cacheInBackground()方法和appendCachedData()。如果我想清除以前不再可见的条目(列表顶部)的缓存,该怎么办?
当我向上滚动时,无限适配器的行为如何? 换句话说是无限适配器双向?如果没有,我可以解决这个限制吗?
提前致谢。
答案 0 :(得分:2)
EndlessAdapter
与您的问题没什么关系。只要底层适配器回收其行,适配器框架就可以处理“非常大的列表”。但是,最终,您的模型数据将占用过多的堆空间。
那我该如何处理缓存?
首先不要在ListView
中放入“千件商品”。为您的用户提供一些方法来查找不涉及筛选大量列表的内容。
我可以清除之前的条目吗?
不,只能在其他任何Adapter
中执行此操作。
如果我想清除以前不再可见的条目(列表顶部)的缓存怎么办?
制定您自己的AdapterView
和Adapter
框架,该框架的工作原则是Adapter
报告某些较大数据集中某些位置的内容。
当我向上滚动时,无限适配器将如何表现?
与任何其他Adapter
相同。