カスタム リスト アダプターで観察したように、getView メソッドは次の目的で何度も呼び出されます。行ごとに、一見無計画に行われているように見えます。この動作は混乱を招く可能性がありますが、実際には Android の設計上の問題ではありません。
getView は表示されている行に対してのみ呼び出す必要があると一般に信じられていますが、実際はそうではありません。 ListView 項目は、リストをスクロールするとリサイクルおよび再利用されます。このリサイクルを促進するために、ListView は、表示される行のビューを事前に測定してキャッシュします。この事前測定プロセスでは、ビューのサイズを決定するために getView を複数回呼び出す必要があります。
getView 呼び出しで認識される順序の欠如も、次の副作用です。リサイクル。行がスクロールされて表示されなくなると、それらに関連付けられたビューがキャッシュから削除され、これから表示されるビューに再利用されます。これは、getView 呼び出しの順序がユーザーのスクロール動作に応じて変わる可能性があることを意味します。
この場合、ListView に Wrap_content の高さを指定しました。これにより、ListView はレイアウト時に複数の子を測定して、独自の高さを決定するようになります。その結果、ListView は、スクロールを開始する前に、それらの子のキャッシュ ビューを作成します。
ListView のリサイクル メカニズムは、スムーズなスクロールのパフォーマンスを維持するために不可欠です。 getView 呼び出しの順序と数が不安定に見えるかもしれませんが、これはこのメカニズムの自然な副産物であり、エラーやバグではありません。
以上がAndroid ListView の getView() メソッドが複数回、一見ランダムな順序で呼び出されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。