0

在基于 Spark 的列表中,我试图取消选择列表中的项目。我通过将 selectedIndex 设置为 -1 或 List.NO_SELECTION 来做到这一点。但是,上一个项目不断被选中。为什么会这样?

4

1 回答 1

0

原因是在前面的代码中我调用了 myArrayCollection.refresh() 并且在设置 selectedIndex 之前还没有验证列表。

此列表将调用 mx_internal dataProviderRefreshed() 方法并将其置于 invalidProperties 状态。这安排列表清除选择索引和插入符号索引(在我的情况下,重新选择以前选择的索引)。

/**
 *  @private
 *  Default response to dataProvider refresh events: clear the selection and caret.
 */
mx_internal function dataProviderRefreshed():void
{
    setSelectedIndex(NO_SELECTION, false);
    setCurrentCaretIndex(NO_CARET);
} 

解决方案是在对 dataProvider 的数组集合调用 refresh() 并在此之后设置 selectedIndex 之后调用 list.validateNow()。

于 2013-06-27T13:16:07.713 回答