我在 Android 上实现了一个简单的无限滚动 GridView。我有以下组件:
- 一个带有 onScrollListener 的 GridView,每当 GridView 滚动到最底部时,我都会启动一个 AsyncTask 以将更多项目加载到我的适配器中。
- 一个适配器,它附加从 AsyncTask 获取的项目,并触发 notifyDataChanged() 以便 GridView 可以自行刷新。
这似乎工作正常,除非在这种情况下适配器无限增长......我的意思是每当用户滚动到最后时,我都会将项目附加到这个适配器,这似乎是一个内存问题。
实现无限适配器的正确方法是什么?我正在寻找概念,而不是为我做的第三方罐子。
谢谢
解决方案
标记的答案具有正确的理论。我的实现将加载的数据备份到sqllite数据库中,所以整体流程是:在一个线程中从互联网下载数据,在一个线程中解析并将数据存储到数据库中,在UI线程上触发notifyDataChanged。
适配器的 getCount() 方法只是简单地从数据库中选择 count(id),然后一次从数据库中检索一批对象到内存中供适配器使用。