【发布时间】:2014-04-13 07:34:52
【问题描述】:
我通过在 onScrollStateChanged(...) 方法中将更多项目加载到 arraylist 来实现无限列表视图。如果我正在实施这个方案来获取超过 100 万个条目,我将在 arraylist 中添加一百万个对象,这是内存密集型的。我可以使用哪些方案来进行高效的内存管理?
PS:问题是关于可以放入适配器的项目数量。 编辑:
更多细节:
数据来源是互联网。我必须从 Internet 获取数据并将其放入 listview 适配器。
【问题讨论】:
-
就
ListView本身而言,你应该利用回收机制:stackoverflow.com/a/14108676/3071356。 -
@super-qua - 我了解视图中的回收。但问题是关于listview的来源,它是一个arraylist。
-
是的,我知道,只是想添加这个以防你不知道
-
如果您仍然延迟加载列表视图(并且由于 ListView 本身回收视图),为什么要将所有 100 万个项目加载到 ArrayList 中?我建议只保留屏幕上显示的项目并动态加载新项目。当然我不知道你的数据的来源,这可能不是那么容易。如果您详细说明实际数据,我可以给您一些建议。
-
我会考虑将数据存储到 SQLite DB 中,并用
Cursor填充ListView(使用CursorAdapter)。更具体地说,好处是SQLiteCursor扩展自AbstractWindowedCursor,它利用了通过CursorWindow(基本上是缓冲区)公开数据的优势。因此,您不必太担心在内存中存储大量项目,以及对所有这些不同的 Android 设备进行适当的管理。话虽如此,您真的想向用户显示一个包含超过一百万个项目的列表吗?
标签: android android-listview listadapter