Falsches Bild wird in meinen ListView-Zeilen angezeigt

Ich benutze diesen Code in meinem getView:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    if (v == null) {

        LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.listrow, null);
    }
    Order o = items.get(position);

    if (o != null) {
        TextView tt = (TextView) v.findViewById(R.id.toptext);
        ImageView thumb = (ImageView) v.findViewById(R.id.icon);

        if (o.getOrderDrawable() != null) {
            thumb.setImageDrawable(o.getOrderDrawable());
        } else {
            tt.setText(o.getOrderTitle());
        }

    }
    return v;
}

Das Problem ist beim Scrollen; manchmal wird das richtige Bild angezeigt, aber manchmal werden die Bilder beim Vor- und Zurückblättern in zufälliger Reihenfolge angezeigt, und das ist nicht mit der Zeile verknüpft.

Die Bilder werden aus dem Internet heruntergeladen.

Wie soll ich das Problem lösen?