2010-12-02 5 views
2

Ich habe das folgende Problem.Problem beim Abrufen der QuickInfo zum Aktualisieren auf einem itemRenderer in Flex

Ich habe eine Arraycollection, die für eine TileList (genannt favoriteLinksList)

ich als Datenprovider benimmt verwenden ein itemRenderer FavoriteItem als der TileList des itemRenderer genannt. Diese FavoriteItem sieht wie folgt aus:

<?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> 

Wie Sie die Tooltips für die beiden Elemente darin sehen von data.tooltip

fein Das funktioniert getroffen werden.

Das Problem besteht darin, den Tooltip zu aktualisieren, wenn er sich geändert hat.

Die Objekte (vom Typ Object) in der Arraycollection haben jeweils eine Eigenschaft Tooltip genannt (offensichtlich, da das ist, wo die itemRenderer seine Informationen aus bekommen).

Wenn ich diese Eigenschaft auf den neuen Wert zu ändern, der Tooltip des itemRenderer ändert sich nicht, dies zu reflektieren.

Ich versuchte es manuell einstellen, indem Sie die itemRenderer von der Veranstaltung erhalten, die nach dem Klicken auf eines der Elemente in dem TileList ausgelöst wird, aber ohne Erfolg.

Beispiel:

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

nach dem Tooltip aktualisiert hat, aber das gibt einen Kompilierungsfehler: Zugang von möglicherweise nicht definierte Eigenschaft Titel über einen Verweis mit statischem Typ mx.controls.listClasses: IListItemRenderer.

Ich habe auch versucht, eine Aktualisierung() auf der favoriteLinksList Array Sammlung durchführen, aber diese gemischte Ergebnisse gab. Der Tooltip wurde korrekt aktualisiert, aber eines der Elemente (das erste) in der Fliesenliste ist verschwunden! Dies scheint ein Flex-Bug zu sein. Der Datenprovider hat die gleiche Anzahl von Elementen vor und nach der Aktualisierung und dies geschieht nicht, wenn ich auf das erste Element in der Liste klicke.

Alle Hilfe wird sehr geschätzt.

Antwort

0

Eine Lösung für mein Problem gefunden.

Die favoriteLinksList bindefähig ist und als das Datenprovider des TileList eingestellt. Änderungen an den einzelnen Objekten wurden jedoch nicht an den itemRenderer weitergegeben.

Ich dachte, dass es eine Änderung an der favoriteLinksList Array Collection selbst geben muss.

Wie bereits in meiner Frage erwähnt, habe ich favoriteLinksList.refresh() bereits versucht, aber dadurch wurde das erste Element in der tileList verschwinden (obwohl es immer noch in der Array Collection zu sein schien). Ein möglicher Fehler in Flex vielleicht?

Auf jeden Fall entdeckt, dass ein Weg, um dieses folgendes auszuführen war:

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

Wesentlichen Ich gründe, ist für die itemRenderer genug, aber dies das Element am Index X auf sich selbst so nicht wirklich etwas zu tun um die Daten für den itemRenderer zu aktualisieren.

0

Ich würde etwa 2 Dinge zu tun

  1. , dass das Objekt tatsächlich bindefähig ist und die Änderung geschieht und immer auf den Elementrenderer

  2. mögliche Lösung => die weisend für die Daten überschreiben Eigenschaft in dem Elementrenderers, vergessen Sie nicht super.data = Wert

zu nennen -

Stand mit einem Haltepunkt in dieser Reihe, sollten Sie es bekommen, wenn sich die Daten ändern.

+0

aus irgendeinem Grund war der Code, den ich eingefügt habe, nicht korrekt formatiert. Hier ist ein Link zum Code: http://pastie.org/1341113 – KensoDev

+0

Ich bekomme "kann nicht auf die Eigenschaft eines Null-Objekt-Verweis zugreifen" für title.toolTip = data.tooltip Gedanke, die Daten in Wert zu ändern, so dass es title.toolTip = ist value.tooltip aber immer noch keine Freude :( Die favoriteLinksList ist [Bindable] und Änderungen daran beim Start der Anwendung spiegeln sich korrekt in TILELIST. Das Problem ist nachträgliche Änderungen daran. –

+0

Realisiert, dass, obwohl die favoriteLinksList bindbar und als Dataprovider zur TileList, Änderungen an den einzelnen Objekten dürfen nicht in die TileList übernommen worden sein.Eine Lösung gefunden und unten aufgeführt: –

Verwandte Themen