2011/08/16

Android で ListView に非同期で取ってきた画像を表示したら位置がおかしい件

あ…ありのまま 今 起こった事を話すぜ!
『一番目のアイコンを設定したとおもったら、5番目のアイコンも設定していた』
な… 何を言ってるのか(ry

でもね、ほんとにそう思いました。

Twitterとかによくみられる「左にアイコンがあってその右に文字」のレイアウト。
それを表現するために、Android だと ListView がまあよく使われると思います。
盛大にハマったので一応な解決策です。




1にしか画像ファイルはないんだけど・・・・
下にスクロールすると6にも7にも・・・
グリグリしてるとなにがなにやら・・・・
たぶん原因としては、 ListView 内で contentview を使いまわしてるから、
非同期で取ってくると参照がずれて違うところに当てはめちゃうっていうことだと思う。

いろいろ関係ない処理が入ってますが、そこはご愛嬌。
ImageView のタグと、AsyncTask のタグと比較することで同じ行と判断し、
画像を表示することができました。
再利用されているってわかっても、どうも解決策が見つからなくて、
激ハマリしました。


※参考にさせて頂きました。
Android画像付きリストの設定(ListView) らぼ☆ろぐ