我正在實現一個自定義Flex組件,該組件提供了一個可滾動的視圖到一個(可能非常大的)數據網格上。我使用ItemRenderer模式,這樣我就只有UIComponents在給定的時間在屏幕上可見的元素。換句話說,類似於標準DataGrid控件。'預先測量'Flex組件
我的一個要求是動態調整網格單元的大小以適應提供的數據,以便列寬和行高度在前面已知。 (當用戶滾動並看到新的單元格時,列寬和行高不會波動。)
此需求意味着當組件的dataSource或itemRenderer執行整個網格的「預先測量」階段被改變。我想使用標準Flex組件測量操作來執行此預測量階段。
我此度量預相電流的策略是:
- 獲得一個的itemRenderer實例
- 初始化的itemRenderer
- 對於數據源中的每一個小區:
- 設置itemRenderer的'數據'對象到該單元格的數據
- 'commitProperties()'部件
- 「度量()」基於測量所組分
- 更新列寬/行高度適當地導致
我寧願不附着的itemRenderer到應用程序的顯示列表中,但是這意味着它將不會被框架初始化。另外,我需要渲染器的初始化和commitProperties/measurement階段同步發生。我害怕我必須複製多少Flex組件生命週期管理框架才能完成此任務。
所以我呼籲那些比我更有經驗的至理名言:
- 這一策略的可行性有什麼想法?
- 關於我如何優雅地使用框架來爲我執行此度量的任何建議?
- 任何更好的策略來確定細胞大小?
是的,令人驚訝的是我已經記得設置super.data。 :)編寫我自己的遞歸例程是一件簡單的事情,它似乎目前運行良好。 乾杯! – Aron 2009-06-12 23:16:33