0
我有List的自定義LabelItemRenderer,並重寫設置數據函數。在每個數據中,我都有屬性「銷售」,可以是真或假。取決於這個屬性我m adding icon. Everything seems fine until i
米將滾動列表向下幾次。對於設置爲false的列表索引,銷售額爲true。我檢查了我的數據提供者並且無法找到錯誤,但是在我的自定義項目中,渲染數據是錯誤的,並且圖標顯示在錯誤的地方。錯誤的數據在自定義LabelItemRenderer
這裏是我的代碼:
package components {
import flash.display.Bitmap;
import spark.components.LabelItemRenderer;
import spark.components.supportClasses.StyleableTextField;
import spark.primitives.BitmapImage;
public class StoresList extends LabelItemRenderer {
private var storeName:StyleableTextField;
private var floor:StyleableTextField;
private var mapListIco:Bitmap;
private var promotions:Bitmap;
private var sales:Boolean;
private var compData:Object;
public function StoresList() {
super();
}
override public function set data(value:Object):void {
compData = value;
storeName.text = compData.title;
floor.text = 'floor : ' + compData.floor;
if (compData.sales && compData.salesIco) {
promotions = compData.salesIco;
addChild(promotions);
}
}
private function createStoreName():void {
storeName = StyleableTextField(createInFontContext(StyleableTextField));
storeName.editable = false;
storeName.selectable = false;
storeName.multiline = false;
storeName.wordWrap = false;
storeName.styleDeclaration = styleManager.getStyleDeclaration(".titleStyleName");
addChild(storeName);
}
private function createFloortextField():void {
floor = StyleableTextField(createInFontContext(StyleableTextField));
floor.editable = false;
floor.selectable = false;
floor.multiline = false;
floor.wordWrap = false;
floor.styleDeclaration = styleManager.getStyleDeclaration(".floor");
addChild(floor);
}
override protected function createChildren():void {
// store name
createStoreName();
// floor
createFloortextField();
// maplist ico
mapListIco = new Textures.mapListIco160;
addChild(mapListIco);
}
override protected function measure():void {
measuredWidth = getElementPreferredWidth(storeName) + getElementPreferredWidth(floor);
// We only care about the "real" ascent
measuredHeight = getElementPreferredHeight(storeName) + getElementPreferredHeight(floor);
}
override protected function drawBackground(unscaledWidth:Number, unscaledHeight:Number):void {
super.drawBackground(unscaledWidth, unscaledHeight);
}
override protected function layoutContents(unscaledWidth:Number, unscaledHeight:Number):void {
// store name
var gap:Number = Math.round(unscaledHeight * .1);
var storeNameHeight:Number = getElementPreferredHeight(storeName);
var floorHeight:Number = getElementPreferredHeight(storeName);
var storenameY:Number = Math.round((unscaledHeight - (storeNameHeight + floorHeight + gap)) * .5);
setElementSize(storeName, storeName.textWidth, storeName.textHeight);
setElementPosition(storeName, unscaledWidth * .15, storenameY);
// floor
var floorY:Number = Math.round(storenameY + storeNameHeight);
setElementPosition(floor, unscaledWidth * .15, floorY + gap);
// map list
setElementPosition(mapListIco, unscaledWidth - mapListIco.width - unscaledWidth * .05, (unscaledHeight - mapListIco.height) * .5);
// promotions
if (promotions) {
setElementPosition(promotions,
(unscaledWidth * .15 - getElementPreferredWidth(promotions)) * .5,
(unscaledHeight - getElementPreferredHeight(promotions)) * .5)
}
}
}
}
謝謝你,我在createChildren中移動了促銷的創建,並在設置新數據時將其隱藏。現在一切工作正常.. 10倍 –