我有一個由ArrayCollection爲其dataProvider支持的Spark List(spark.components.List
)。當有太多的行要顯示時,List有一個垂直滾動條。我想要的是當一個新行被添加到列表中以便滾動到底部以顯示新行時。當添加新數據時,Flex Spark List滾動到底部
我試着從ArrayCollection的偵聽器調用List的ensureIndexIsVisible
。這不起作用,因爲列表尚未完全呈現新行。它要麼滾動到倒數第二行,或者拋出該異常:
Error: invalidIndex
at spark.layouts.supportClasses::LinearLayoutVector/start()[E:\dev\4.0.0\frameworks\projects\spark\src\spark\layouts\supportClasses\LinearLayoutVector.as:893]
at spark.layouts.supportClasses::LinearLayoutVector/getBounds()[E:\dev\4.0.0\frameworks\projects\spark\src\spark\layouts\supportClasses\LinearLayoutVector.as:1117]
at spark.layouts::VerticalLayout/getElementBounds()[E:\dev\4.0.0\frameworks\projects\spark\src\spark\layouts\VerticalLayout.as:852]
at spark.layouts.supportClasses::LayoutBase/http://www.adobe.com/2006/flex/mx/internal::getScrollPositionDeltaToElementHelper()[E:\dev\4.0.0\frameworks\projects\spark\src\spark\layouts\supportClasses\LayoutBase.as:1367]
at spark.layouts.supportClasses::LayoutBase/getScrollPositionDeltaToElement()[E:\dev\4.0.0\frameworks\projects\spark\src\spark\layouts\supportClasses\LayoutBase.as:1348]
at spark.components::List/ensureIndexIsVisible()[E:\dev\4.0.0\frameworks\projects\spark\src\spark\components\List.as:2105]
我確信,我的聽衆是設置列表的dataProvider之後添加到ArrayCollection中。希望在List有機會處理新行後,我會打電話給ensureIndexIsVisible
。我的猜測是列表不會呈現該行,直到稍後發生的某個重繪事件(在我調用ensureIndexIsVisible
之後)。
我也試過指定一個VerticalLayout
並將它的verticalScrollPosition
設置爲過大的數字(如99999)。這有同樣的問題 - 它滾動到最後一行的第二個問題。
那麼,有沒有辦法滾動到Spark列表中新添加的行?我唯一能在互聯網上找到的是poorly formatted flexcoders thread。
您是否嘗試在'callLater'中調用'ensureIndexIsVisible()'?像'callLater(function():void {ensureIndexIsVisible(lastIndex)});' – 2010-10-07 18:04:08
是的,我試過了,它不起作用,顯然callLater沒有足夠晚的時間被調用。我確實使用了setTimeout,它確實有效,但這非常不合理。 – 2010-10-07 18:39:16