ホームページ > Java > &#&チュートリアル > Android ListView の getView() メソッドが複数回、一見ランダムな順序で呼び出されるのはなぜですか?

Android ListView の getView() メソッドが複数回、一見ランダムな順序で呼び出されるのはなぜですか?

Linda Hamilton
リリース: 2024-12-10 00:00:18
オリジナル
424 人が閲覧しました

Why Does My Android ListView's getView() Method Get Called Multiple Times and in an Apparently Random Order?

getView が一貫性のない順序で複数回呼び出されるのはなぜですか?

カスタム リスト アダプターで観察したように、getView メソッドは次の目的で何度も呼び出されます。行ごとに、一見無計画に行われているように見えます。この動作は混乱を招く可能性がありますが、実際には Android の設計上の問題ではありません。

複数の呼び出しが必要な理由

getView は表示されている行に対してのみ呼び出す必要があると一般に信じられていますが、実際はそうではありません。 ListView 項目は、リストをスクロールするとリサイクルおよび再利用されます。このリサイクルを促進するために、ListView は、表示される行のビューを事前に測定してキャッシュします。この事前測定プロセスでは、ビューのサイズを決定するために getView を複数回呼び出す必要があります。

「一貫性のない順序」

getView 呼び出しで認識される順序の欠如も、次の副作用です。リサイクル。行がスクロールされて表示されなくなると、それらに関連付けられたビューがキャッシュから削除され、これから表示されるビューに再利用されます。これは、getView 呼び出しの順序がユーザーのスクロール動作に応じて変わる可能性があることを意味します。

具体的な例

この場合、ListView に Wrap_content の高さを指定しました。これにより、ListView はレイアウト時に複数の子を測定して、独自の高さを決定するようになります。その結果、ListView は、スクロールを開始する前に、それらの子のキャッシュ ビューを作成します。

結論

ListView のリサイクル メカニズムは、スムーズなスクロールのパフォーマンスを維持するために不可欠です。 getView 呼び出しの順序と数が不安定に見えるかもしれませんが、これはこのメカニズムの自然な副産物であり、エラーやバグではありません。

以上がAndroid ListView の getView() メソッドが複数回、一見ランダムな順序で呼び出されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート