AndroidのListViewでWebの画像を表示させる

ListView内にTwiterアイコンを表示させたら、かなり重くなりました。調べてみると、AdapterのgetViewが毎回呼ばれていて、毎回画像をとりに行っていました。
コンストラクタで画像は取得して使いまわすようにしました。コンストラクタ内に例外処理があるのはなんとなくなので、もう少し改良しようと思います。

package jp.co.acl_inc.android.netladio;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.util.ArrayList;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class TwitterAdapter extends ArrayAdapter {

	private ArrayList<TwitterStatus> items;
	private LayoutInflater inflater;
	Drawable[] icons;

	/**
	 * コンストラクタ
	 * @param context
	 * @param textViewResourceId
	 * @param items
	 */
	public TwitterAdapter(Context context, int textViewResourceId, ArrayList<TwitterStatus> items) {
		super(context, textViewResourceId, items);
		this.items = items;
		//コンストラクタで画像データをセットする
		icons = new Drawable[items.size()];
		for (int i = 0; i < items.size(); i++) {
			TwitterStatus item  = (TwitterStatus) items.get(i);
			try {
				URL url = new URL(item.getProfileImageUrl());
				icons[i] = Drawable.createFromStream((InputStream)url.getContent(), "");
			} catch (MalformedURLException e) {
				Log.e("--ACL--", e.getMessage());
			} catch (IOException e) {
				Log.e("--ACL--", e.getMessage());
			}
		}
		this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
	}
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// ビューを受け取る
		View view = convertView;
		if (view == null) {
			// 受け取ったビューがnullなら新しくビューを生成
			view = inflater.inflate(R.layout.tlist_row, null);
		}
		// 表示すべきデータの取得
		TwitterStatus item = (TwitterStatus)items.get(position);
		if (item != null) {
			//ユーザー名
			TextView fromUserTextView = (TextView)view.findViewById(R.id.from_user);
			fromUserTextView.setText(item.getFromUser());
			//テキスト
			TextView textTextView = (TextView)view.findViewById(R.id.text);
			textTextView.setText(item.getText());
			//画像
			ImageView profileImageView = (ImageView)view.findViewById(R.id.prifile_image_url);
			if (icons != null) profileImageView.setImageDrawable(icons[position]);
			//発信時刻
			TextView createAtTextView = (TextView)view.findViewById(R.id.create_at);
			createAtTextView.setText(item.getCreateAt().toLocaleString());
		}
		return view;
	}
}