cr4shm4n
Mitglied
Hallo,
ich bastele gerade an einer kleinen Flex-Anwendung, in der eine Liste mit Elementen vorkommt, die abhängig von den jeweiligen Inhalten eingefärbt werden sollen. Dazu steht im Datenobjekt eine Eigenschaft namens color, auf die ich dann in einem eigenen itemRenderer zugreife.
Der Text wird über die toString-Funktion des Datenobjekts generiert.
Hier noch der Codeausschnitt mit dem itemRenderer:
So, damit komme ich zum eigentlichen Problem. Auf den ersten Blick scheint beim aufrufen zwar alles in Ordnung, aber sobald man scrollt, erscheinen leere Einträge (die allerdings korrekt eingefärbt sind). Mit ein wenig herumscrollen schafft man es manchmal, die Einträge zu füllen, was zu einem unerträglichen herumhüpfen der Scrollleiste führt.
Ein Lösungsversuch sah so aus:
Das führt dazu, dass die Einträge von der ersten Seite beim runterscrollen einfach nochmals in der gleichen Reihenfolge erscheinen.
Hat da jemand Lösungsansätze?
ich bastele gerade an einer kleinen Flex-Anwendung, in der eine Liste mit Elementen vorkommt, die abhängig von den jeweiligen Inhalten eingefärbt werden sollen. Dazu steht im Datenobjekt eine Eigenschaft namens color, auf die ich dann in einem eigenen itemRenderer zugreife.
Der Text wird über die toString-Funktion des Datenobjekts generiert.
Hier noch der Codeausschnitt mit dem itemRenderer:
Code:
<mx:List id="shoutListControl" dataProvider="{shoutList}"
styleName="shoutList" variableRowHeight="true"
verticalScrollPolicy="on" horizontalScrollPolicy="off" selectable="false"
left="0" top="25" bottom="0" right="0" textAlign="left" labelFunction="shoutToString">
<mx:itemRenderer>
<mx:Component>
<mx:HBox backgroundColor="{data.color}"
backgroundAlpha="1.0" styleName="shoutListItem" width="{this.width-2}">
<mx:Text id="shoutText" styleName="shoutBody" width="100%" htmlText="{data}"/>
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
</mx:List>
So, damit komme ich zum eigentlichen Problem. Auf den ersten Blick scheint beim aufrufen zwar alles in Ordnung, aber sobald man scrollt, erscheinen leere Einträge (die allerdings korrekt eingefärbt sind). Mit ein wenig herumscrollen schafft man es manchmal, die Einträge zu füllen, was zu einem unerträglichen herumhüpfen der Scrollleiste führt.
Ein Lösungsversuch sah so aus:
Code:
<mx:List id="shoutListControl" dataProvider="{shoutList}"
styleName="shoutList" variableRowHeight="true"
verticalScrollPolicy="on" horizontalScrollPolicy="off" selectable="false"
left="0" top="25" bottom="0" right="0" textAlign="left" labelFunction="shoutToString">
<mx:itemRenderer>
<mx:Component>
<mx:HBox creationComplete="init();"
backgroundAlpha="1.0" styleName="shoutListItem" width="{this.width-2}">
<mx:Script>
<![CDATA[
public function init():void
{
shoutText.htmlText = data.toString();
this.setStyle("backgroundColor", data.color);
}
]]>
</mx:Script>
<mx:Text id="shoutText" styleName="shoutBody" width="100%"/>
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
</mx:List>
Hat da jemand Lösungsansätze?