これは非常に一般的なシナリオです。インターネットからダウンロードする必要がある画像を ListView に表示します。
現在、ListView に使用する ArrayAdapter のカスタム サブクラスがあります。ArrayAdapter の getView() 実装では、別のスレッドを生成して画像を読み込みます。ロードが完了すると、適切な ImageView が検索され、ImageView.setImageDrawable() で画像が設定されます。したがって、私が使用したソリューションは、次のようなものです: ListView での画像の遅延ロード
私が抱えている問題は、ImageView で setImageDrawable() を呼び出すとすぐに、ListView がリスト内の現在表示されているすべての行を何らかの形で更新することです! これにより、一種の無限ループが発生します。
- getView() が呼び出されます
- 画像をロードするためにスレッドが生成されます
- 画像が読み込まれます。setImageDrawable() は ImageView で呼び出されます
- ListView は何らかの理由でそれを取得し、それ自体を更新します
- ListView を更新するには、表示されている行ごとに getView() が呼び出されるため、手順 1 に戻り、すべてが繰り返されます。
私が見る限り、「Android - ListView で画像を遅延ロードするにはどうすればよいですか」(上記のリンクを参照) で提案されているソリューションは単に機能しません。そのように見えるかもしれませんが、バックグラウンドで現在表示されている行を再ロードし続けるため、非常に遅くなります。
誰かが以前にこれに遭遇したか、および/またはこれに対する解決策を持っていますか?