Index: trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.cs
===================================================================
--- trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.cs	(revision 3317)
+++ trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.cs	(revision 3327)
@@ -102,5 +102,6 @@
       listViewItem.ToolTipText = item.ItemName + ": " + item.ItemDescription;
       listViewItem.Tag = item;
-      SetListViewItemImage(listViewItem);
+      itemsListView.SmallImageList.Images.Add(item.ItemImage);
+      listViewItem.ImageIndex = itemsListView.SmallImageList.Images.Count - 1;
       return listViewItem;
     }
@@ -119,9 +120,13 @@
       sortDescendingButton.Enabled = itemsListView.Items.Count > 0;
     }
-    protected virtual void UpdateListViewItem(ListViewItem listViewItem) {
+    protected virtual void UpdateListViewItemImage(ListViewItem listViewItem) {
+      int i = listViewItem.ImageIndex;
+      listViewItem.ImageList.Images[i] = ((T)listViewItem.Tag).ItemImage;
+      listViewItem.ImageIndex = -1;
+      listViewItem.ImageIndex = i;
+    }
+    protected virtual void UpdateListViewItemText(ListViewItem listViewItem) {
       if (!listViewItem.Text.Equals(listViewItem.Tag.ToString()))
         listViewItem.Text = listViewItem.Tag.ToString();
-      if (itemsListView.SmallImageList.Images[listViewItem.ImageIndex] != ((T)listViewItem.Tag).ItemImage)
-        SetListViewItemImage(listViewItem);
     }
     protected virtual IEnumerable<ListViewItem> GetListViewItemsForItem(T item) {
@@ -262,5 +267,5 @@
         T item = (T)sender;
         foreach (ListViewItem listViewItem in GetListViewItemsForItem(item))
-          UpdateListViewItem(listViewItem);
+          UpdateListViewItemImage(listViewItem);
       }
     }
@@ -271,5 +276,5 @@
         T item = (T)sender;
         foreach (ListViewItem listViewItem in GetListViewItemsForItem(item))
-          UpdateListViewItem(listViewItem);
+          UpdateListViewItemText(listViewItem);
       }
     }
@@ -277,12 +282,4 @@
 
     #region Helpers
-    protected virtual void SetListViewItemImage(ListViewItem listViewItem) {
-      T item = (T)listViewItem.Tag;
-      int i = 0;
-      while ((i < itemsListView.SmallImageList.Images.Count) && !item.ItemImage.Equals(itemsListView.SmallImageList.Images[i]))
-        i++;
-      if (i == itemsListView.SmallImageList.Images.Count) itemsListView.SmallImageList.Images.Add(item.ItemImage);
-      listViewItem.ImageIndex = i;
-    }
     protected virtual void SortItemsListView(SortOrder sortOrder) {
       itemsListView.Sorting = SortOrder.None;
Index: trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.cs
===================================================================
--- trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.cs	(revision 3317)
+++ trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.cs	(revision 3327)
@@ -123,5 +123,6 @@
       listViewItem.ToolTipText = item.ItemName + ": " + item.ItemDescription;
       listViewItem.Tag = item;
-      SetListViewItemImage(listViewItem);
+      itemsListView.SmallImageList.Images.Add(item.ItemImage);
+      listViewItem.ImageIndex = itemsListView.SmallImageList.Images.Count - 1;
       return listViewItem;
     }
@@ -141,10 +142,13 @@
       listViewItem.Remove();
     }
-    protected virtual void UpdateListViewItem(ListViewItem listViewItem) {
-      T item = (T)listViewItem.Tag;
-      listViewItem.Text = item.ToString();
-      listViewItem.ToolTipText = item.ItemName + ": " + item.ItemDescription;
-      if (itemsListView.SmallImageList.Images[listViewItem.ImageIndex] != item.ItemImage)
-        SetListViewItemImage(listViewItem);
+    protected virtual void UpdateListViewItemImage(ListViewItem listViewItem) {
+      int i = listViewItem.ImageIndex;
+      listViewItem.ImageList.Images[i] = ((T)listViewItem.Tag).ItemImage;
+      listViewItem.ImageIndex = -1;
+      listViewItem.ImageIndex = i;
+    }
+    protected virtual void UpdateListViewItemText(ListViewItem listViewItem) {
+      if (!listViewItem.Text.Equals(listViewItem.Tag.ToString()))
+        listViewItem.Text = listViewItem.Tag.ToString();
     }
 
@@ -311,5 +315,6 @@
           ListViewItem listViewItem = itemsListView.Items[item.Index];
           listViewItem.Tag = item.Value;
-          UpdateListViewItem(listViewItem);
+          UpdateListViewItemImage(listViewItem);
+          UpdateListViewItemText(listViewItem);
         }
       }
@@ -339,5 +344,5 @@
         foreach (ListViewItem listViewItem in itemsListView.Items) {
           if (((T)listViewItem.Tag) == item)
-            UpdateListViewItem(listViewItem);
+            UpdateListViewItemImage(listViewItem);
         }
       }
@@ -350,18 +355,7 @@
         foreach (ListViewItem listViewItem in itemsListView.Items) {
           if (((T)listViewItem.Tag) == item)
-            UpdateListViewItem(listViewItem);
+            UpdateListViewItemText(listViewItem);
         }
       }
-    }
-    #endregion
-
-    #region Helpers
-    protected virtual void SetListViewItemImage(ListViewItem listViewItem) {
-      T item = (T)listViewItem.Tag;
-      int i = 0;
-      while ((i < itemsListView.SmallImageList.Images.Count) && (item.ItemImage != itemsListView.SmallImageList.Images[i]))
-        i++;
-      if (i == itemsListView.SmallImageList.Images.Count) itemsListView.SmallImageList.Images.Add(item.ItemImage);
-      listViewItem.ImageIndex = i;
     }
     #endregion
Index: trunk/sources/HeuristicLab.Core.Views/3.3/NamedItemCollectionView.cs
===================================================================
--- trunk/sources/HeuristicLab.Core.Views/3.3/NamedItemCollectionView.cs	(revision 3317)
+++ trunk/sources/HeuristicLab.Core.Views/3.3/NamedItemCollectionView.cs	(revision 3327)
@@ -100,5 +100,5 @@
         foreach (T item in e.Items) {
           foreach (ListViewItem listViewItem in GetListViewItemsForItem(item))
-            UpdateListViewItem(listViewItem);
+            UpdateListViewItemText(listViewItem);
         }
       }
