package view; import vo.RiderVO; import uuid.Uuid; import feathers.controls.AssetLoader; import feathers.data.ListViewItemState; import feathers.controls.dataRenderers.ItemRenderer; import feathers.utils.DisplayObjectRecycler; import feathers.layout.AutoSizeMode; import feathers.controls.ListView; import feathers.events.FeathersEvent; import model.AppModelLocator; import openfl.events.Event; import t9.util.ColorTraces.*; class RidersList extends ListView { private var model = AppModelLocator.getInstance(); public function new() { super(); addEventListener(FeathersEvent.CREATION_COMPLETE, onCreationComplete); } override private function initialize():Void { super.initialize(); // set common properties for all renderers in the same container here var recycler = DisplayObjectRecycler.withFunction(() -> { var itemRenderer = new ItemRenderer(); itemRenderer.icon = new AssetLoader(); return itemRenderer; }); itemRendererRecycler = recycler; recycler.update = (itemRenderer:ItemRenderer, state:ListViewItemState) -> { //traceRed($type(state.data)); //var className = Type.getClassName(Type.getClass(state)); //traceRed("Current class name = " + className); var rider:RiderVO = cast state.data; itemRenderer.text = rider.firstName; itemRenderer.secondaryText = rider.name; /*var item = state.data; itemRenderer.text = item.firstName; itemRenderer.secondaryText = item.name;*/ var loader = cast(itemRenderer.icon, AssetLoader); loader.sourceScale = 0.7; loader.source = "bitmaps/pp_100.jpg"; //TODO change this to real iamge path //loader.source = "https://lepetittrot.com/path/to/pp_pictures" + state.data.id + ".jpg"; //loader.source = "https://testingbot.com/free-online-tools/random-avatar/50?u=" + Uuid.nanoId(); }; model.addEventListener(AppModelLocator.RIDERS_LIST_DP_CHANGE, onRideListDpChange); } private function onCreationComplete(event:FeathersEvent):Void { traceBlue(this + " --> onCreationComplete() - w: " + width + " h: " + height ); } private function onRideListDpChange(e:Event):Void { dataProvider = model.ridersListDP; /*itemToText = function(item:Dynamic):String { return item.firstName; };*/ traceGreen(this + " --> onRideListDpChange() - w: " + width + " h: " + height ); } }