這個問題聽起來微不足道,只是將virtualLayout
設置爲false,但那不是我所追求的。如何防止itemRenderer被Flex中的新實例替換
我有以下情況。我的Flex移動應用程序具有預定義的容器,通常爲總應用程序寬度的一半。用戶可以最大化這些組件,以便它們佔用所有可用的寬度。
當然,對於在List
或DataGroup
中顯示數據的組件,渲染器必須調整大小。這可以直接使用,但我需要它們在組件最大化時顯示更多信息。 爲了這個工作,我創建了一個非常簡單的方法來更新渲染器;
private function updateRenderer():void {
_itemRenderer.properties = {isFullScreen: _isFullScreen, headerProperties:_headerProperties, visibleColumns:_visibleColumns, optimalColWidth:_optimalColWidth, grid:this.name, fids:_fids};
_list.itemRenderer = _itemRenderer;
}
渲染性質,如visibleColumns相應地改變,並且由於渲染器將自動調整大小期間被無效,它們可以與新的屬性重繪。
這一切都很好,但不幸的是,新的渲染器是用這種過程創建的,而不是簡單地重用現有的渲染器並讓它們自己重繪。
有什麼辦法可以改變這種行爲,或者有人知道更好的方式來完成這樣的任務嗎?
這可能會導致成性能問題和內存泄漏。爲什麼不使用狀態? –
沒有內存泄漏和性能明智我沒有看到問題。你在哪裏看到這種更新渲染器的方法的潛在缺陷?但是你說得對,國家可能是更有效的解決方案,我與國家唯一的問題是改變它們的方式。我需要根據主機組件的大小來更新渲染器,但數據對象保持完全相同,因此它不包含有關渲染器應處於哪種狀態的任何信息。 – AlBirdie
@AdrianPirvulescu,第二個想法是,由於渲染器屬性是由外部組件動態設置的,因此無法使用狀態。渲染器屬性是例如標籤及其大小的渲染器,而不是必須根據設置的屬性創建標籤,就像具有動態列的表格行一樣。 – AlBirdie