我有一个列表将布局设置为水平显示。Flex 4.6移动横向列表:Reload itemRenderer
<s:List id="pagedList"
width="100%" height="100%"
verticalScrollPolicy="off" horizontalScrollPolicy="on"
pageScrollingEnabled="true"
itemRenderer="views.component.renderer.pageListItemRenderer"
skinClass="views.component.skin.PagedListSkin"
dataProvider="{acPages}"
scrollSnappingMode="center"
interactionMode="touch"
useVirtualLayout="true">
<s:layout>
<s:TileLayout orientation="rows" requestedRowCount="1"
columnWidth="{pagedList.width}" rowHeight="{pagedList.height}"
verticalGap="0" horizontalGap="0" />
</s:layout>
</s:List>
对列表中的数据提供程序是
[Bindable]
private var acPages:ArrayCollection =
new ArrayCollection([
{status:"Approved", method:"findRange(0,10)"},
{status:"Pending", method:"findRange(10,20)"},
{status:"Draft", method:"findRange(20,30)"},
{status:"Ready", method:"findRange(30,40)"},
{status:"Cancelled", method:"findRange(40,50)"},
{status:"Recommended", method:"findRange(50,60)"},
{status:"Resubmitted", method:"findRange(60,70)"}
]);
最后的itemRenderer
<fx:Script>
<![CDATA[
override public function set data(value:Object):void
{
super.data = value;
if (value== null)
return;
if (data.status)
mss.loadDgrid(data.method);
}
]]>
</fx:Script>
<s:Group width="100%" height="100%">
<s:layout>
<s:VerticalLayout gap="0" verticalAlign="middle" horizontalAlign="center" paddingBottom="30"/>
</s:layout>
<s:Group width="100%" contentBackgroundColor="0x000001">
<s:layout>
<s:HorizontalLayout horizontalAlign="center" verticalAlign="middle"/>
</s:layout>
<s:Label fontWeight="bold" text="<" paddingLeft="20"/>
<s:Spacer width="100%"/>
<s:Label fontWeight="bold" text="{data.status}"/>
<s:Spacer width="100%"/>
<s:Label fontWeight="bold" text=">" paddingRight="20"/>
</s:Group>
<s:DataGrid id="dgTaskGrid"
width="100%" height="100%"
verticalScrollPolicy="on"
dataProvider="{mss.dataProvider}">
<s:columns>
<s:ArrayList>
<s:GridColumn headerText="Application ID" dataField="phId" />
<s:GridColumn headerText="Status" dataField="phAppStatus" />
</s:ArrayList>
</s:columns>
</s:DataGrid>
</s:Group>
你能看到的是,名单将根据acPages ArrayCollection
和用户显示7页可以在列表上左右滑动以进入下一页/上一页。每个页面将具有DataGrid并且应该加载它们各自的内容。例如,“已批准”页面将使用acPages
上指定的data.method
显示其自己的数据。然后mss.loadDgrid
将发送HTTPRequest
到web服务并返回结果。
目前,发生了什么,该列表将首先正确显示Approved数据,一旦向左滑动显示下一页(待定页面),该页面将呈现所需数据。但是,当我滑回到前一页(已批准页面)时,DataGrid正在显示待定页面中的数据。我在想它应该重新加载,但事实并非如此。这适用于其余的页面。
我试过useVirtualLayout
设置为false
和true
,但似乎没有什么解决。我也已经覆盖set Data
函数以及收听itemRenderer
的dataChange()
,但它仍不会重新加载。
我现在想要的是在每次刷卡时,itemRenderer
将刷新并获取所需的数据。
我是Flex的新手,所以可能是我用的方法是错误的。期待您的帮助。
感谢, 杰森
我仍然无法完成它。基本上我想实现的就像Android的ViewPager组件所做的一样。 – jason 2012-07-20 07:06:50