如何确定是否为可见行调用ListAdapter

时间:2012-10-20 17:48:36

标签: android android-listview

我有一个ListView,可以显示一些内存密集的AnimationDrawables。屏幕上不可能有超过2个,但在列表中的项目中很容易有数十个。

我的问题是我的ListAdapter似乎被调用列表中的每个项目。我假设这是为了ListView可以设置它的滚动高度。但这意味着我正在加载所有那些我不需要的AnimationDrawables(使用大量内存)。

有没有办法确定对ListAdapter的调用是否针对不可见的行?这将允许我跳过加载这些可能永远不需要出现在屏幕上的昂贵对象。

1 个答案:

答案 0 :(得分:0)

ListViews回收行,因此任何时候只有几行不可见的行。这就是适配器的getView方法所做的事情。它创建一个View(如果需要),并设置当前项的数据。因此,如果您拥有的项目多于可见行,则传入getView的视图将不会为空,应该只是更新而不是创建。