ネットワーク上の画像を読み込むのにVolleyを使う方法で最初に見た記事がImageLoader#getImageListener
でリスナーを作ってImageLoader#get
でImageContainer
を作る方式だったのでそれを使っていたが、Google I/O 2013 の動画に出てきたNetworkImageView
を使うと自分でリクエストをキャンセルする必要もなくて楽だった(ただし動画のスライドはパッケージ名が違っているので注意)。
レイアウトでImageView
の代わりにNetworkImageViewを配置して:
<com.android.volley.toolbox.NetworkImageView |
setImageUrlを呼び出せばそれだけでOK:
NetworkImageView imageView = (NetworkImageView) convertView.findViewById(R.id.hoge); |
ListViewのAdapterなどでViewを使いまわされる場合にも自分でキャンセルする必要がない。またアクティビティだかフラグメントが非アクティブになる時にも自動的にキャンセルされる(らしい)。
getImageListener
で指定していた第2,第3引数のdefaultImageResId
とerrorImageResId
も設定できる:
imageView.setDefaultImageResId(defaultImageResId); |
普段はネットワークのURLから読み込むけど、ある条件ではリソース中のnoimageを表示したい、という場合には上記のdefaultImageResId
を設定して、imageView.setImageUrl(null)
とすればよい。
この簡単さ、いや逆になんで最初からこういうのなかったんだ、という気にさえなってくる。