优化android listview的getView

时间:2014-02-24 17:42:32

标签: android listview android-listview

我想知道是否有一种方法可以预装Android ListView中的几个视图?

例如,默认情况下,当列表视图项目滚出屏幕时,它将成为转换视图,并将重新装饰为屏幕上的下一个视图。我的问题是,每个listview项目正在从内存中加载一个非常大的图像,如果它在它出现之前就开始加载它会停止滚动。

我想知道是否有一种方法可以指定加载视图的阈值,例如,预加载3个视图而不是1个?

谢谢

1 个答案:

答案 0 :(得分:2)

对此有一点不同的方法:

首先,从适配器的getView()中删除加载操作。此方法应尽可能精简。在后台加载第一批图像并将其传递给适配器。 (例如,存储在List中)

二。在listView上设置AbsListView.OnScrollListener,覆盖onScroll()并计算用户滚动的观看量:int count = firstVisibleItem + visibleItemCount;。如果此int超过您加载的图像数,则开始显示进度条并在后台线程中加载图像,将它们提供给适配器(添加到List)。加载完成后,在适配器上调用notifyDataSetChanged()并完成。

您可以加载任意数量的项目。