2012-02-08 103 views
0

我需要一些列表上的图像帮助。第二个.mxml文件中有一个带ItemRenderer的List。名单必须显示从RSS项的标题和图像,但我的名单上显示不`吨图像:(什么是错我的代码ItemRenderer图片不显示

这是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> 

我试着使用一些锐美选项包括源= “data.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> 

欧,这里是从DetailsView.mxml代码,其中锐美位于:

感谢您的任何帮助!

回答

0

我想你是如何描述它的rImage有错误的路径。请记住,如果作为相对路径给出,则在运行时解析的路径将与swf/apk执行位置相关。如果您的图像位于代码所在的包中,那么它将在构建时最终位于该包结构中,但MXML将全部编译为位于输出文件夹根部的swf。我建议创建一个单独的包,将其称为资源,将其作为源文件夹包含在Flex构建路径中,然后在其中创建一个图像文件夹并将其中的图像放入其中,以使它们与源代码保持分离。在构建路径选项中使用相对于作为源目录包含的资源文件夹的路径(如果您不知道如何将该文件夹添加为源文件夹,请右键单击该项目转至属性转至构建路径点击源选项卡并将其添加到那里)。在上面的“渲染器”视图的代码中,将“图像/”添加到字符串的开头,如

rimage =“images /”+ resArr2 [1] +“。jpg”;

让我知道,如果我完全错过了这个问题或解释你写错了什么。看起来你的绑定,因为它是很好,但。

+0

你好shuanhusain!感谢您的回复,但我从RSS描述加载图像,而不是图像文件夹。我在我的问题中犯了错误。来自icon.mxml文件(itemRenderer)的源代码位于第一个代码框中。我是一个初学者在Flex和编程:(你有邮件,MSN等,我会联系你:) – Roky 2012-02-10 01:50:36

+0

我的电子邮件和Gmail是我的名字在中间点,但老实说,我更喜欢StackOverflow,因为我可以在这里跳来跳去,以我自己的节奏来采取行动(这是一个很好的方式,当我深深地思考自己的工作时,我会重新确认自己知道某些事情)。如果你想聊天,Gmail是最简单的来回方式,但又不是公开记录,其他人可以从对话中受益,所以我更喜欢使用这个网站。如果我们通过即时通讯获得解决方案,至少应该在此处发布,以防有​​人遇到相同的问题。 – shaunhusain 2012-02-10 02:13:31

+0

我会重新检查你的第一个代码块,看看我能否看到出了什么问题,所以我假设rimage是图像文件的完整绝对路径,然后才能正确? – shaunhusain 2012-02-10 02:14:26