[英]Flex 4.6 Mobile Horizontal List: 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>
列表的dataProvider是
[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,並應加載各自的內容。 例如,批准頁面將使用顯示自己的數據data.method
分配上acPages
。 然后, mss.loadDgrid
將向Web服務發送HTTPRequest
並返回結果。
當前,正在發生的事情,列表將首先正確顯示批准的數據,一旦我向左滑動以顯示下一頁(待處理的頁面),該頁面將很好地呈現所需的數據。 但是,當我滑動回到上一頁(“批准的”頁面)時,DataGrid正在顯示掛起的頁面中的數據。 我當時認為應該重新加載,但事實並非如此。 這適用於其余頁面。
我嘗試將useVirtualLayout
設置為false
和true
但似乎沒有任何結果。 我還重寫了set Data
函數以及偵聽itemRenderer
dataChange()
,但仍然不會重新加載。
我現在想要的是每次滑動, itemRenderer
將刷新並獲取所需的數據。
我是Flex的新手,所以我使用的方法可能是錯誤的。 期待您的幫助。
謝謝,傑森
這是itemrenderer刷新問題。 您可以查看以下內容:
將所有數據放入acPages arraycollection的原因是什么? 也許,您可以創建7個arraycollection來保存數據,然后在需要時將其分配給acPages。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.