ArrayCollection spark.components.List是{{3}}的dataProvider
,allowMultipleSelection="true"
。myList.selectedIndices.sort(ascendingSort);
// remove items, counting backwards
for (var i:uint = myList.selectedIndices.length; i > 0; i--) {
myArrayCollection.removeItemAt(myList.selectedIndices[i-1]);
}
。有一个“删除所选项目”按钮,该按钮在单击时启动从ArrayCollection中删除所有选定项目。
我目前使用以下方法:
ascendingSort
removeItemAt
符合您的期望;)。它工作正常,我知道总是工作。
然而,我确实注意到如果我完全忽略了这种情况,令我惊讶的是删除仍然有效。原因是,当selectedIndices
被调用时,removeItemAt
会相应更新。
所以我的问题是:可以依靠selectedIndices
调用更新{{1}}中的值吗?或者可能在运行时和/或Flex SDK版本之间有所不同?
显然,如果它是可靠的,那么排除这种情况将是一个重大改进。
答案 0 :(得分:1)
可以依赖removeItemAt调用来更新中的值 将selectedIndices?
显然在你的用例中,是的。
或者在运行时和/或Flex之间可能会有所不同 SDK版本?
它可能会在未来某个时候发生变化,或者之前可能已发生变化。我知道根据我对基于列表的类的经验,有时修改dataProvider可能会导致列表返回“无选择”状态。删除不允许多选的列表上的单个selectedItem就是一个很好的例子。
通常,在我使用的应用程序中,我不会根据用户在列表中的选择从列表中删除项目;相反,它们通常根据实际对象中的某些标准被删除(或过滤)。该条件通常是一个布尔值,与DataGrid列中显示的复选框相关。
答案 1 :(得分:0)
var indexes:Vector.<Object> = list.selectedItems;
while(indexes.length > 0 )
{
var item:* = indexes.pop();
var remindex:int = list.dataProvider.getItemIndex(item);
if (remindex != -1)
{
list.dataProvider.removeItemAt(remindex);
}
}