Я отчаянно пытаюсь исправить странное поведение в моем пользовательском списке iconitemrenderer: когда я изменяю представление на представление со списком внутри и начинаю прокручивать, список становится белым за доли секунды (практически полностью перерисовывается), но только один раз при прокрутке в первый раз после изменения вида.
В IconItemRenderer я добавляю галочку:
<s:IconItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
...
override protected function commitProperties():void
{
//create checkbox
if(!checkMarkImage && data.isChecked) {
//create image holder
imageHolder = new Group;
addChild(imageHolder);
//create image
checkMarkImage = new BitmapImage();
checkMarkImage.source = checkBoxSource;
imageHolder.addElement(checkMarkImage);
}
//delete checkmark
else if(checkMarkImage && !data.isChecked) {
removeChild(imageHolder);
imageHolder = null;
checkMarkImage = null;
}
super.commitProperties();
}
override protected function layoutContents(w:Number, h:Number):void
{
super.layoutContents(w, h);
//layout the checkmark
if(checkMarkImage) {
// don't do it like this! (see correct answer)
checkMarkImage.x = w-40;
checkMarkImage.y = 14;
}
}
Обработчик изменения списка устанавливает метку для выбранного элемента иудаляет его из старого.После того, как это сделано, он вызывает popView (), но когда вы снова приходите к этому представлению, список создается в представлениях addHandler, и когда вы начинаете прокручивать список, он ведет себя, как упомянуто выше.проблема в myList.dataProvider.itemUpdated (oldItem), по-видимому, средство визуализации считает, что оно должно перерисовать все, но я понятия не имею, почему ... и почему только после того, как представление снова отображается ...?Есть идеи, если это ошибка или что-то?Как я могу избавиться от этого поведения или как правильно отладить это?спасибо