2012-07-17 48 views
0

Flex(4.6)中的<s:List>項目渲染器在項目渲染器本身內是否有一種方式來標識列表中的特定項目的索引?Flex <s:List> Itemrender索引

我嘗試使用類的itemIndex屬性,但它總是返回零。另外,this example on SO給了我幾個運行時錯誤。

謝謝你的時間。

回答

1

我只注意到itemIndex是行不通的,因爲它的價值還沒有被列入名單的生命週期過程中設置創建。

在項目渲染器中,我正在偵聽addedToStage事件並在其處理程序中使用itemIndex。一旦我將addedToStage事件更改爲creationCompleteitemIndex便具有適當的值。

希望能幫助別人。

1

主要應用:

<?xml version="1.0" encoding="utf-8"?> 
<s:Application 
    width="100%" 
    height="100%" 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx"> 
    <s:List itemRenderer="IndexedItemRenderer"> 
     <s:dataProvider> 
      <s:ArrayList> 
       <fx:String>Item A</fx:String> 
       <fx:String>Item B</fx:String> 
       <fx:String>Item C</fx:String> 
       <fx:String>Item D</fx:String> 
       <fx:String>Item E</fx:String> 
      </s:ArrayList> 
     </s:dataProvider> 
    </s:List> 
</s:Application> 

IndexedItemRenderer項目渲染:

<?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" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    autoDrawBackground="true"> 
    <s:Label text="{itemIndex + 1}. {data}"/> 
</s:ItemRenderer> 
+0

謝謝你的評論!我只是想出了爲什麼'itemIndex'沒有返回一個合適的值。我在上面發佈了我的答案。 – 2012-07-17 19:58:05

+0

如果可行,請在項目渲染器中使用數據綁定。我剛剛更新了我的項目渲染器,以使用您提到的itemIndex作爲比我第一次嘗試更好的選項。 – skovalyov 2012-07-17 20:02:11

+0

我會使用數據綁定,除了索引用於在列表中的每個項目上執行的計算。 – 2012-07-17 20:04:54