2

私は最初のアプリを開発しており、ここでたくさん読んでいます。

次の問題の解決策を 1 週間以上探していましたが、うまくいきませんでした。各行に画像と3行のテキストを表示するAdapterように拡張されています。ArrayAdapter内部では、getViewに関連情報を割り当て、クラスをTextView使用して画像をダウンロードし、 に割り当てます。ImageLoaderImageView

すべてがうまく機能します!画面に 4.5 行が表示されています (合計 20 行のうち)。初めて下にスクロールすると、画像が引き続きダウンロードされ、正しい順序でリストに割り当てられます。

しかし、リストをスクロールバックすると、すべての画像が失われ、正しい順序で再描画が開始されます(画像ごとに0.5〜1秒)。私が読んでいるのは、標準的なリストのパフォーマンスですが、変更したいです。

画像がダウンロードされると、現在のウィンドウのセッション全体のリストに「貼り付け」られるようにします。連絡先リストやマーケットと同じように。20 枚の画像 (各 6 ~ 9kb) のみです。

私はなんとか自分自身を説明できたことを願っています。

4

2 に答える 2

2

ダウンロード後に各イメージをキャッシュする必要があります。アダプターが必要になるたびに、既にダウンロードされているイメージがキャッシュ(ディスクまたはメモリ)から取得されているかどうかを確認し、そうでない場合はダウンロードします。

最初は、Android開発サイトhttp://developer.android.com/training/displaying-bitmaps/cache-bitmap.htmlからこのチュートリアルを読むことをお勧めします

または、このような外部ライブラリを使用しますhttps://github.com/koush/UrlImageViewHelper

于 2012-10-06T21:22:36.707 に答える
0

ここでの問題は、ArrayAdapterがスクロール時にリストビューの行を再利用しているため、下にスクロールすると、一番上の行が再利用され、リストの一番下に挿入されることです(パフォーマンス上の理由から)。

ここでの最善の策は、毎回ImageLoaderを呼び出さないように、デバイスにローカルで画像をキャッシュすることです。

この問題を解決する非常に優れたライブラリの1つは、点火です。これはオープンソースであり、ここから入手できます:https ://github.com/kaeppler/ignition

RemoteImageViewキャッシングメカニズムの良い例を見てください。

于 2012-10-06T21:23:28.790 に答える