2009-12-17 5 views
0

은 가정하자 내가 이런는, ViewStack 있습니다낮은 오버 헤드 동적 탭/Flex의 ViewStack?

<mx:ViewStack id="s" left="5" right="5" bottom="5" top="0" width="100%" height="100%" creationPolicy="all" minHeight="0"> 
    <mx:Repeater id="repeater" dataProvider="{dp}" height="100%" width="100%" minHeight="0"> 
     <mx:Box id="bx" label="{repeater.currentItem.label}" width="100%" height="100%" minHeight="0"> 
      <mx:Label minHeight="0" width="100%" height="100%" label="bob" /> 
     </mx:Box> 
    </mx:Repeater> 
</mx:ViewStack> 

스택에 많은 수의 항목 (각 등 패널, 데이터 바인딩, 많은 수를 가진)로를이 매우 느린 가져옵니다. Repeater는, viewStack 자체의 creationPolicy에 관계없이, 모든 아이의 작성을 개시하고있는 것처럼 보입니다.

이 효율성 문제에 대한 readymade 솔루션이 있습니까? 내가 사용자 정의 구성 요소를 해결하기 위해 몇 가지 방법을 생각할 수 있지만 내적 값이 정말 (ArrayCollection에 의해 뒷받침) 동적이어야 할 경우에 대한 선반 솔루션이 있는지 궁금하네요.

답변

2

표시되는 특정 데이터를 제외하고 모든 스택보기가 동일하다고 가정 할 경우 가능한 해결책은 뷰 스택을 버리고 모든 컨트롤을 배열 컬렉션에 바인딩 한 다음 변경하는 데 사용할 컨트롤을 설정하는 것입니다 당신의 viewstack 대신 배열 컬렉션을 업데이트 할 수 있습니다.

+0

예, ArrayCollection에 많은 DisplayObject가있는 것처럼 들립니다. DisplayObjects에는 많은 오버 헤드가 포함되어 있기 때문에 일반적으로 좋지 않습니다. 가능한 경우 데이터 자체 만 ArrayCollection에 저장하고 렌더러를 구성 요소로 사용합니다. 렌더러가 다시 사용되기 때문에이 방법이 더 효율적입니다. – CookieOfFortune

0

itemRenderer가있는 목록을 사용하려고 시도합니다. 리피터는 끔찍한 성능으로 악명이 높습니다.