0

リストが表示されてスクロールされると、ListAdapter.getView()は新しいリストアイテムビューを作成するか、リストに渡された既存のビューを( "convertViewとして)リツールして新しいコンテンツを表示します。

getView()によって作成されたすべてのビューを取得する方法があるかどうか疑問に思っていますか?たとえば、アクティビティが破棄されたときにリストアイテムビューがリソースを解放する必要がある場合は、すべてのリストアイテムビューを調べて、リソースを解放するように指示すると便利です。

4

4 に答える 4

4

まあ、それは使用を繰り返すほど単純ではありません-これはサブクラスです-そして再利用されるsを保持するために使用されるを実装します。ListViewListView#getChildAt(int)ListViewAbsListViewAbsListViewRecycleBinView

を使用して、を親から切り離して(リストビュー)にView配置する前に、を使用してアクセスできないようにします。RecycleBinViewGroup#detachViewFromParent(View)getChildAt(int)

実装する必要があるのは、がに移動したRecyclerListenerときに通知するインターフェイスです。ViewRecycleBin

于 2012-01-23T20:20:59.223 に答える
0

javaです。リソースを解放するために、アプリケーションまたはインスタンスを実際に破棄するように命令することはできません。finalize()を使用すると、Javaマシンがそれを実行する可能性を高めることしかできません。

于 2012-01-23T20:14:51.717 に答える
0

ListViewはであるため、次のViewGroupように子ビューを反復処理できるはずです。

for (int i=0; i < myListView.getChildCount(); i++) {
    View v = myListView.getChildAt(i);

    //Check to see if this view has the resource, then release it
}

この質問でも同様のことが必要でした:Android:ListViewから子ビューにアクセスする

于 2012-01-23T20:12:58.433 に答える
0

アダプタがこのアクティビティの外部で使用されていない限り (その場合、これらのビューが不要になったことを本当に知りませんか?)、このアダプタへの唯一の参照はアクティビティ内にあります。つまり、Activity がガベージ コレクションされている場合、アダプターはガベージ コレクションされます。つまり、ビューが収集されます。この動作に測定可能な問題がない限り、これを最適化しようとはしません。

于 2012-01-23T20:35:54.227 に答える