Изображения ItemRenderer не отображаются - PullRequest
0 голосов
/ 09 февраля 2012

Мне нужна помощь с изображениями в списке.У меня есть список с ItemRenderer на второй файл .mxml.В списке должны отображаться заголовок и изображение из элемента rss, но мои изображения в списке не отображаются :( Что не так с моим кодом?

Это код HomeView.mxml:

   <?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:rssreader="services.rssreader.*"
        fontWeight="bold" title="Elektro-Vozila" viewActivate="getData()">

    <fx:Script>
        <![CDATA[

            import spark.events.IndexChangeEvent;
            protected function getData():void
            {
                getDataResult.token = rssreader.getData();
            }

            import mx.events.CollectionEvent;
            import valueObjects.Item;


            protected function fixEntityReferences(event:CollectionEvent):void
            {
                myList.labelFunction = replaceEntity;

                function replaceEntity(item:Item):String
                {
                    var p1:RegExp = /(&quot;)/ig; // perhaps add more here later
                    var thisString:String = item.title.replace(p1, "");
                    trace(thisString);
                    return thisString;

                }

            }

            protected function myList_changeHandler(event:IndexChangeEvent):void
            {

                var RSSItem:Object = myList.dataProvider.getItemAt(event.newIndex);
                navigator.pushView(DetailsView, RSSItem);
            }

        ]]>

    </fx:Script>

    <fx:Declarations>
        <s:CallResponder id="getDataResult"/>
        <rssreader:Rssreader id="rssreader"/>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <s:navigationContent>
        <s:Image right="20" height="52" source="images/logo.png"/>
    </s:navigationContent>

    <s:List id="myList" width="100%" height="100%" change="myList_changeHandler(event)" fontSize="0"
            fontWeight="normal" itemRenderer="views.icon">

        <s:AsyncListView list="{getDataResult.lastResult}"
                         collectionChange="fixEntityReferences(event)"/>

    </s:List>
</s:View>

And this is code from icon.mxml:

    <?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer  xmlns:fx="http://ns.adobe.com/mxml/2009" 
                 xmlns:s="library://ns.adobe.com/flex/spark"
                 autoDrawBackground="true">

    <s:states>
        <s:State name="normal" />
        <s:State name="selected" />
    </s:states>
    <s:VGroup width="100%" height="100%" gap="0">
        <s:HGroup width="100%" height="100%">
            <s:Image width="72" height="72" source="{data.rimage}"
                     scaleMode.normal="stretch"/>


            <s:VGroup width="100%" height="70" gap="0" paddingBottom="10" paddingLeft="10"
                      paddingRight="10" paddingTop="10"
                      height.normal="90" horizontalAlign.normal="justify">
                <s:Label text="{data.title}"
                         fontSize.normal="16" fontWeight.normal="normal"
                         verticalAlign.normal="justify"
                         styleName.selected="menuTitleText"/>

            </s:VGroup>
        </s:HGroup>
        <s:Line width="100%"><s:stroke><s:SolidColorStroke color="0x808080" weight="1" /></s:stroke></s:Line>
    </s:VGroup>


</s:ItemRenderer>

Я пытаюсь использовать некоторые опции rimage, включая source = "data.rimage", rimage, {data.rimage} ... но не работает :(

    <?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:rssreader="services.rssreader.*"
        title="{rtitle}" viewActivate="getDetails()">

    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;

            import valueObjects.Item;

            [Bindable] public var rimage:String;
            [Bindable] private var rtitle:String;
            [Bindable] private var rlink:String;
            [Bindable] private var rdesc:String;



            private function getDetails():void
            {

                var thisItem:Item = data as Item;

                rtitle = thisItem.title;
                rlink = thisItem.link;
                rdesc = thisItem.description;


                var descArr:Array = rdesc.split("src=");
                var resArr:Array = descArr[1].split(".jpg");
                var resArr2:Array = resArr[0].split("\"");
                rimage = resArr2[1] + ".jpg";

}


        ]]>

    </fx:Script>
    <fx:Declarations>
        <s:CallResponder id="getDataResult"/>
        <rssreader:Rssreader id="rssreader"/>


    </fx:Declarations>
    <s:navigationContent>
        <s:Button label="Nazaj" click="navigator.popView()" />
    </s:navigationContent>
    <s:BorderContainer top="0" bottom="0" left="0" right="0"
                       backgroundColor="#FFFFFF">


        <s:Label left="20" right="20" top="42" height="61"
                 backgroundColor="#FFFFFF" color="#000000" fontSize="24"
                 paddingBottom="30" paddingLeft="5" paddingRight="5"
                 paddingTop="5" text="{rtitle}"/>


        <s:Label left="20" right="90" top="14" height="23" backgroundColor="#FEFDFD" color="#666666"
                 fontSize="18" fontStyle="italic" paddingBottom="5" paddingLeft="5" paddingRight="5"
                 paddingTop="5" text="Objavljeno: {rdate}"/>

        <s:BitmapImage y="110" left="20" right="20" smooth="true" smoothingQuality="high"
                       source="{rimage}" />

        <s:Label left="20" right="20" top="264" bottom="135" color="#666666"
                 backgroundColor="#FFFFFF" fontSize="18" paddingBottom="5"
                 paddingLeft="5" paddingRight="5" paddingTop="15"
                 text="{rdesc2}" maxDisplayedLines="10" />

        <s:Button left="50" right="50" bottom="22" label="Preberi celoten članek"
                  click="navigator.pushView(ClanekHTML, data.link)"/>







    </s:BorderContainer>

</s:View>

Ou, вот код из DetailsView.mxmlгде находится ридж:

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 10 февраля 2012

Я думаю, из того, как вы это описали, образ имеет неверный путь.Помните, что пути, разрешенные во время выполнения, если заданы как относительный путь, будут относительно места выполнения swf / apk.Если у вас есть ваши изображения в пакете, где расположен код, то при сборке он окажется в структуре этого пакета, однако все MXML будут скомпилированы в SWF-файл, который находится в корне выходной папки.Я рекомендую создать отдельный пакет, назвать его ресурсами, включить его в путь сборки Flex в качестве исходной папки, создать там папку с изображениями и поместить туда свои изображения, чтобы отделить их от исходного кода.Используйте путь относительно папки ресурсов, которую вы указали в качестве исходного каталога в параметрах пути сборки (если вы не знали, как добавить папку в качестве исходной папки, щелкните правой кнопкой мыши по проекту, перейдите в свойства, перейдите к Flex buildпуть нажмите на вкладку источника и добавьте его туда).В своем коде в представлении «рендер» вверху добавьте «images /» в начало строки, например

rimage = «images /» + resArr2 [1] + ". Jpg";

Дайте мне знать, если я полностью пропустил проблему или неправильно истолковал то, что вы написали.Похоже, твоя привязка в порядке.

...