画像ビューを含むリスト ビュー用のカスタム配列アダプターがあります。カスタム アダプター クラスには、 list 内の各項目の一意の URL から一意の画像をダウンロードする asynctask があります。問題は、各アイテムの ImageViews が継続的に画像を変更し続けることです。カスタム アレイ アダプタ クラスの AsyncTask を介して URL から画像を取得する際に問題があることを教えてください。
助けが必要です(どんな形でも)
画像ビューを含むリスト ビュー用のカスタム配列アダプターがあります。カスタム アダプター クラスには、 list 内の各項目の一意の URL から一意の画像をダウンロードする asynctask があります。問題は、各アイテムの ImageViews が継続的に画像を変更し続けることです。カスタム アレイ アダプタ クラスの AsyncTask を介して URL から画像を取得する際に問題があることを教えてください。
助けが必要です(どんな形でも)
ListView (またはその他のアダプター ソース ビュー) の非同期ロードを開始する際の問題は、ビューが画面から消えると、ビューが再利用される可能性があることです。これに対処する最も簡単な方法は、ライブラリを使用してそれを行うことです。私のお気に入りはAQueryです
そのルートに行きたくない場合は、自分でロールする必要があります。これを行うには、AsyncTask の完了時にビューが開始時と同じものを表示しているかどうかを確認する必要があります。setTag(tag)
アダプタの で返すビューを呼び出しますgetView()
。次に、イメージを ImageView に設定する前getTag()
に、ビューを呼び出して、設定したオブジェクトと同じであることを確認します。次のようになります。
final View view = MY VIEW;
final Object tag = new Object();
view.setTag(tag);
new AsyncTask() {
...
public void onPostExecute(Bitmap bar) {
if(tag.equals(view.getTag()) {
imageView.setImage(bar);
}
}
...
}.execute();
return view;
そして、キャッシングなどを開始できます。複雑ですよね?そうそう、ライブラリを使用する必要があります。
あなたを助けることができるそれらのライブラリを見てみましょう:)
Picasso
Universal Image Loader