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