Flex Mobile: странное поведение в списке IconItemRenderer - PullRequest
1 голос
/ 29 февраля 2012

Я отчаянно пытаюсь исправить странное поведение в моем пользовательском списке 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), по-видимому, средство визуализации считает, что оно должно перерисовать все, но я понятия не имею, почему ... и почему только после того, как представление снова отображается ...?Есть идеи, если это ошибка или что-то?Как я могу избавиться от этого поведения или как правильно отладить это?спасибо

1 Ответ

2 голосов
/ 01 марта 2012

Я понял!

Не знаю почему, но когда я заменяю

checkMarkImage.x = w-40;
checkMarkImage.y = 14;

с

setElementPosition(checkMarkImage, w-40, 14);

в методе LayoutContents IconItemRenderer все работает нормально.

...