我有一个带有几个项目(“文件夹”)的Spark.List,每个项目都包含一个文件的ArrayList,当我选择其中一个“文件夹”时,它应该在另一个Spark.List上显示“文件”列表。它的工作正是通过这样做:
private function onFolderChange (event:*):void {
var list:List = event.currentTarget as List;
if (list.selectedIndex != -1) {
currentFolder = null;
currentFolder = list.selectedItem;
fileListDataProvider = currentFolder.files;
fileList.selectedIndex = -1;
}
}
问题是当“文件”缩略图覆盖更多时,列表视口有时需要通过从“文件夹”更改为另一个“文件夹”来滚动文件列表丢失文件。
例如,假设有一个“文件夹1”,里面有30个“文件”(10个可见,20个被卷轴隐藏),“文件夹2”有5个“文件”(全部可见),如果我切换回去在“文件夹”之间有时它会显示一切正确,有时它会在不需要时在“文件夹2”上显示滚动,有时它只会在“文件夹1”中显示一些(5或10)“文件”即使它有30个。
fileList有问题,它更新了它的项目,但没有真正更新。我已经尝试将itemRenderer设置为null并重新应用,将dataProvider设置为null并重新应用,执行validateNow()....我有点迷失。
有什么想法吗?
答案 0 :(得分:1)
为什么不使用直接数据绑定?
<s:List id="folders" dataProvider="{folderList}" />
<s:List id="files" dataProvider="{folders.selectedItem?folders.selectedItem.files:null}" />
对于您的问题,请尝试使用useVirtualLayout
或updateDisplayList()
...