0

Web からの画像を含む行を表示するリストビューがあります。

行を描画する必要がある場合Adapter.getView(...)は、バックグラウンドで画像をダウンロードImageViewし、UI スレッドで設定します。これは、ビットマップが遅延して ImageView に設定されていることを意味します。

シンプルな描画可能なリソースで遅延 setImage...() を試しましたが、結果は同じでした。

遅延マンガーでリソースを設定すると、リスト全体が位置0から始まり、表示されていない位置まで再描画されることがわかりました。明らかな問題は、リストのスクロールが遅くてびくびくしていて、スムーズではないことです。

ここで特に注意したいのは、これは少しスクロールしているときに発生することです。新しく見たアイテムは、通常の の一部として描画されmakeAndAddViewます。しかし、その直後に、表示された行までのすべての行が の一部として描画されmeasureHeightOfChildrenます。

イメージを遅延せずにすぐに設定しても、onMeasureが呼び出されることはありません。

では、すべてのリストの再描画を防ぐにはどうすればよいですか?また、即時の setImage と遅延の動作が異なるのはなぜですか?

4

1 に答える 1

0

遅延と非遅延のsetImage...()問題はまだ解決されていません。

layout_heightリストビューをmatch_parentではなく に設定することで、遅延シナリオでの測定を防ぐことができましたwrap_content

于 2014-10-14T14:34:26.987 に答える