这个问题更多的是关于效率而不是任何错误,因为我已经建立了几种不同的方式,并且无法减少所有的延迟,因为我尝试的每种策略都有其自身的缺点。
所以我的要求是我有一个ListView,其中包含未知但可能非常大(数万)的数据量。当我输入数据时,我需要在它出现的那一天对传入的项目进行排序,以及它所属的游戏的变化。例如
List
List Item 1
Date header
Game 1
Item
Game 2
Item
Item
Item
List Item 2
Date Header
Game x
etc...
由于每个ListItem可以有不同数量的游戏,每个游戏的项目数量不同,我不能(或者还没有找到办法)使用适配器有效地重复使用视图来创建平滑的滚动效果。 / p>
所以这就是我尝试过的:
膨胀容器布局,然后在调用其getView()方法时在适配器内膨胀/构建游戏。每次调用变量时,显然会使变量膨胀,并且即使数据量很小,也不能实现流畅的体验。但是,无论列表中的数据量如何,都会出现波动。
在添加到ListView之前构建所有视图,并让Adapter的getView()方法只返回预构建的View。这对于较少量的数据非常有效,但随着更多数据的添加开始陷入困境。
我的问题是,是否有更好的方法我缺少或优化任何一种策略?
答案 0 :(得分:0)
听起来你可能需要一种名为Holder Pattern的东西。
这看起来很棒:http://www.codeofaninja.com/2013/09/android-viewholder-pattern-example.html
Vogella也在这里触及了这个主题:http://www.vogella.com/tutorials/AndroidListView/article.html#adapterperformance_holder
为了避免必须启用滚动浏览所有列表,您还可以添加pagnation,这个库可能会有所帮助:https://github.com/nicolasjafelle/PagingListView