列表选定项目未取消选择

时间:2013-06-27 13:16:08

标签: flex flex4

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

1 个答案:

答案 0 :(得分:0)

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

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

/**
 *  @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()。