ホームページ >Java >&#&チュートリアル >ListView の「getView」メソッドがランダムな順序で複数回呼び出されるのはなぜですか?
カスタム リスト ビュー アダプターの getView メソッド: 複数呼び出しの詳細な分析
質問:
カスタム リスト アダプターで、getView メソッドが複数回呼び出されるのはなぜですか。順序は無計画ですか?
答え:
ListView の動作方法の固有の性質により、カスタム リスト アダプターの getView メソッドは任意の順序で複数回呼び出すことができます。提供されたコードで観察される動作の説明は次のとおりです。
ConvertViews:
convertView パラメーターは、再利用のためにリサイクルされるビューを表します。 ConvertView が null 以外の場合、ListView が対応する位置のビューをすでに測定および拡張していることを示します。新しいビューを作成する代わりに、アダプターはこのリサイクルされたビューを再利用します。
getView 呼び出し順序:
さまざまな位置で getView が呼び出される順序は保証されません。 。 ListView は、ユーザー入力が受信される前でも、複数の位置に対して getView を呼び出すことがあります。この動作は、特定の XML レイアウトのように、ListView の高さがwrap_contentに設定されている場合に特に一般的です。
getView が複数回呼び出される理由:
getView が呼び出されます。 ListView の測定プロセスにより、位置ごとに複数回実行されます。 ListView が最初に表示されるとき、アダプターからいくつかの子を測定して、それ自体の高さを決定します。この測定プロセスは、リストの表示部分に対する getView 呼び出しをトリガーします。
予測できない ConvertViews:
ユーザーがスクロールすると、ListView は表示されなくなったビューを再利用する可能性があります。そしてそれらを新しいポジションに再利用します。これは、ユーザーがスクロールする前であっても、convertView パラメーターが null 以外になる可能性がある理由を説明しています。
結論:
珍しいように思えるかもしれませんが、呼び出される getView の動作は次のとおりです。複数回や予期せぬ順序で実行しても問題ありません。これは、ビューを再利用し、初期レイアウトの子のサブセットのみを測定することにより、ListView がパフォーマンスを最適化する方法の本質的な部分です。
以上がListView の「getView」メソッドがランダムな順序で複数回呼び出されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。