views:

70

answers:

2

I have 2 Spark List with custom Item Renderers. I'm working on an application that enables users to grag these Item Renders from one List to the other. When one of these IR is dropped in a new position or in another List, I'm updating the dataproviders: remove the object from one list's dataprovider and adding it to other's dataprovider. This si working ok. The problem is that some times the IR is cached and it doesn't show the correct information, based on its data.

How can I force the lists to never cache IRs and all the times I modify the dataprovider, all item renders re-create all IRs (performance won't be an ossue since I have few items on each list)

Tks.

+1  A: 

A few things..

1) ItemRenderers should always be cached [and reused]. This is one of the benefits of using a Flex list in the first place. I suspect your itemRenderer is implemented inorrectly as to not change when it's data changes. If you share some code for this it would be helpful. But, basically, your itemRenderer should listen to the dataChange event and when the data changes you should update the component's visual display with new data.

2) In Flex 3, I'd have sworn that dragging an item from one list to another automatically updated the relevant dataProviders. Are you sure you need to write manual code to make those changes? You will, though, need code to update your backend as relevant.

www.Flextras.com
A: 

Flextras has some good points, but to answer your specific question, you can set useVirtualLayout to false on Spark Lists. This will ensure there is a renderer for every item in your list and thus avoiding the recycling issues. You should really only do this when you have a relatively short list of items though, otherwise you will have performance issues, which as Flextras noted, is the reason Flex recycles renderers.

Wade Mueller
worked perfectly. thanks.
fast-dev