2010-02-09 12 views
1

J'ai un composant List utilisant plusieurs moteurs de rendu d'éléments déterminés par itemRendererFunction. Lorsque je définis les données la première fois, cela fonctionne comme prévu. Ensuite, lorsque je redéfinis les données avec de nouvelles données, il n'appelle pas la fonction itemRendererFunction et essaie de réutiliser les moteurs de rendu actuels, même s'ils ne correspondent pas aux données. Une fois que je défile, la fonction est appelée et les bons moteurs de rendu sont utilisés. J'ai essayé d'appeler invalidateDisplayList et tel avant de définir les données, mais cela n'a pas résolu le problème. Des idées?Spark List réutilisant les mauvais rendus d'éléments

+0

-ce que les itemRenderers de différentes classes? Je m'attendrais à ce que itemRenderers du même type puisse être réutilisé. –

Répondre

4

Il s'avère qu'il s'agit d'un bogue Flex SDK. Peter DeHaan m'a fourni une solution de contournement (redéfinissant la propriété itemRendererFunction après que le DataProvider est défini) et le classant pour une version future du SDK.

+0

Pouvez-vous donner un lien ou des détails à cette solution de contournement? Je pense qu'un problème similaire que j'avais pourrait être lié. – invertedSpear

+3

Vous devez procéder comme suit après chaque fois que vous avez défini la propriété List.dataProvider: List.itemRendererFunction = myItemRendererFunction – destroytoday

+0

Travaillé pour moi aussi. –

0

est ici juste quelques idées:

invalidateProperties Try? En regardant la source, j'ai l'impression que cela pourrait être cela, sinon, peut-être commencer à appeler chaque méthode d'invalidation que vous pouvez trouver jusqu'à ce que vous obteniez le droit. Une autre solution hacky sorta peut-être de ne pas avoir la position de défilement actuelle (via le scroller sur la liste) passer dans un nouveau tableau en tant que dataprovider (qui va certainement recréer les rendus d'éléments) puis régler la position de défilement au même c'était avant le rafraîchissement. Vous pouvez également extraire la sélection du rendu d'élément différent dans le rendu d'élément lui-même. :/