2010-12-02 30 views
2

我遇到以下問題。在Flex中的itemrenderer上正確刷新工具提示時出現問題

我的影片充當一個TileList(稱爲favoriteLinksList)

數據提供我使用的itemRenderer稱爲FavoriteItem作爲TileList的itemRenderer的一個ArrayCollection。這FavoriteItem看起來是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" 
width="280" height="163" 
horizontalAlign="center" 
paddingLeft="5" paddingRight="5" paddingTop="0" paddingBottom="0" xmlns:ns1="*"> 

<mx:Canvas width="100%" height="100%"> 
    <mx:Image 
    id="thumbnail" 
    width="178" height="115" 
    source="{data.thumbnail}" 
    toolTip = "{data.tooltip}" x="46" y="10"/> 

    <mx:Text 
    id="title" 
    text="{data.tileListTitle}" 
    width="254" 
    toolTip="{data.tooltip}" x="10" y="133"/> 
</mx:Canvas> 

</mx:VBox> 

正如你可以看到,在這兩個項目的提示從data.tooltip

這工作正常拍攝。

問題是刷新工具提示時,它已經改變。

ArrayCollection中的對象(Object類型)每個都有一個名爲tooltip的屬性(很明顯,因爲這是itemRenderer從中獲取信息的地方)。

當我將此屬性更改爲其新值時,itemRenderer的工具提示不會更改以反映此情況。

我試圖通過從單擊tilelist中的某個項目但未成功觸發的事件中獲取itemRenderer來手動設置它。

實施例:

event.itemRenderer.title.toolTip = event.currentTarget.selectedItem.tooltip; 

在已經更新工具提示但是這給編譯錯誤:通過靜態類型mx.controls.listClasses參考可能未定義的屬性標題的 訪問:IListItemRenderer。

我也嘗試在favoriteLinksList數組集合上執行refresh(),但是這給了混合結果。工具提示已正確更新,但tilelist中的其中一項(第一項)已丟失!這似乎是一個Flex錯誤。數據提供程序在刷新前後具有相同數量的元素,如果點擊tilelist中的第一個元素,則不會發生這種情況。

非常感謝所有幫助。

回答

0

找到了解決我的問題。

favoriteLinksList可綁定並設置爲tileList的dataProvider。但是,對各個對象的更改不會傳播到itemRenderer。

我認爲必須改變favoriteLinksList數組集合本身。

正如我的問題所述,我已經嘗試使用favoriteLinksList.refresh(),但這使得tileList中的第一個元素消失(儘管它似乎仍然在Array Collection中)。 Flex中可能存在的錯誤?

不管怎麼說,發現解決的辦法是執行以下操作:

favoriteLinksList.setItemAt(favoriteObject, favoriteLinksList.getItemIndex(favoriteObject)); 

從本質上講,我設置在指數X的項目本身,以便實際上沒有做任何事情,但這是不夠的itemRenderer刷新itemRenderer的數據。

0

我會去這樣做兩件事情

  1. 對象是實際可綁定和變化正在發生,讓對項目渲染

  2. 可能的解決方案=>覆蓋二傳手的數據在項目渲染器屬性,則不要忘記調用super.data =值

-

override public function set data(value:Object):void 
{ 
super.data = value; 
title.toolTip = data.tooltip; 
} 

站在這一行中的斷點,你應該在數據改變時進入它。

+0

出於某種原因我粘貼的代碼格式不正確。這裏有一個代碼鏈接:http://pastie.org/1341113 – KensoDev 2010-12-02 12:53:00