Web からの画像を含む行を表示するリストビューがあります。
行を描画する必要がある場合Adapter.getView(...)
は、バックグラウンドで画像をダウンロードImageView
し、UI スレッドで設定します。これは、ビットマップが遅延して ImageView に設定されていることを意味します。
シンプルな描画可能なリソースで遅延 setImage...() を試しましたが、結果は同じでした。
遅延マンガーでリソースを設定すると、リスト全体が位置0から始まり、表示されていない位置まで再描画されることがわかりました。明らかな問題は、リストのスクロールが遅くてびくびくしていて、スムーズではないことです。
ここで特に注意したいのは、これは少しスクロールしているときに発生することです。新しく見たアイテムは、通常の の一部として描画されmakeAndAddView
ます。しかし、その直後に、表示された行までのすべての行が の一部として描画されmeasureHeightOfChildren
ます。
イメージを遅延せずにすぐに設定しても、onMeasure
が呼び出されることはありません。
では、すべてのリストの再描画を防ぐにはどうすればよいですか?また、即時の setImage と遅延の動作が異なるのはなぜですか?