Hi Alvin,
I am glad that you have managed to sort this out.
Nevertheless, here is a brief info which might help others as well:
RadListView uses a virtualization mechanism to display its items. This means that it can contain thousands of logical items while only using a few visual items (as much as are needed to cover the client area of the control). Visual items are stored in a cache and are reused for displaying logical items. When the visual items are not sufficient for covering the client area (at the beginning they are 0), new visual items are created and the
VisualItemCreating event is fired. When a logical item is being attached to a visual item, the
Attach method of the visual item is called.
SynchronizeProperties is called both on
Attach and when the logical item changes some of its properties (this reflects changes in the logical item directly to the visual one, if such exists). In addition, every visual item has a
IsCompatible method which should indicate whether this visual item is compatible with the given logical item. If there isn't any compatible item in the cache, a new visual item is created and the
VisualItemCreating is fired again.
I hope you find this helpful. If you have any further questions on this, do not hesitate to ask.
Best wishes,
Ivan Todorov
the Telerik team