0

非常にメモリを消費するAnimationDrawableを表示できるListViewがあります。これらのうち2つ以上が画面に表示される可能性は低いですが、リストを構成するアイテムには簡単に数十個含まれる可能性があります。

私の問題は、私のListAdapterがリスト内のすべてのアイテムに対して呼び出されるように見えることです。これは、ListViewがスクロールの高さを設定できるようにするためだと思います。しかし、それは私が必要としないすべてのAnimationDrawables(大量のメモリを使用する)をロードしていることを意味します。

ListAdapterの呼び出しが非表示の行に対するものであるかどうかを判断する方法はありますか?これにより、画面に表示する必要がない可能性が高いこれらの高価なオブジェクトの読み込みをスキップできます。

4

1 に答える 1

0

ListViewsは行をリサイクルするため、常に非表示の行は2つだけです。これが、アダプターのgetViewメソッドが行うことです。ビューを作成し(必要な場合)、現在のアイテムのデータを設定します。したがって、表示されている行よりも多くのアイテムがある場合、getViewに渡されるビューはnullにならず、作成されるのではなく更新されるだけです。

于 2012-10-20T18:16:57.603 に答える