Update:

Using a for each loop shows me even the right value, but it's type is lost.
override public function set data(value:Object):void {
                                trace(describeType(value));
                                for each(var a:* in value) {
                                        trace(a)
                                }
                                if (this._item == value) {
                                        return;
                                }
                                super.data = value;
                                if (value is IPlayListItem) {
                                        this._item = IPlayListItem(value);
                                }
                                this.dispatchEvent(new 
FlexEvent(FlexEvent.DATA_CHANGE));
                        }

-> the condition value is IPLayListItem is actually never true.

Best regards

--- In [email protected], "florian.salihovic" <[EMAIL PROTECTED]> 
wrote:
>
> Something i forgot to add:
> in the Debugger the passed Object, which is said to be not convertable in the 
> desired 
> type, shows the right properties.
> 
> Pretty strange to me.
> 
> 
> 
> --- In [email protected], "florian.salihovic" <florian.salihovic@> 
> wrote:
> >
> > Here is the stacktrace:
> > TypeError: Error #1034: Typumwandlung fehlgeschlagen: [EMAIL PROTECTED] 
> > kann 
nicht 
> in 
> > de.blitzeinschlag.playlisteditor.model.playlists.IPlayListItem umgewandelt 
> > werden.
> >     at 
> > de.blitzeinschlag.playlisteditor.view.playlists.listClasses::ListItemRenderer/set
> >  
> > 
> 
data()[/Users/florian/Workspaces/blitzeinschlag/PlayListEditor/src/de/blitzeinschlag/playl
> isteditor/view/playlists/listClasses/ListItemRenderer.mx
> > ml:99]
> >     at 
> 
mx.controls::List/makeRowsAndColumns()[E:\dev\3.1.0\frameworks\projects\framework\
> src\mx\controls\List.as:1286]
> >     at 
> > 
> 
mx.controls.listClasses::ListBase/makeRowsAndColumnsWithExtraRows()[E:\dev\3.1.0\fra
> meworks\projects\framework\src\mx\controls\listClasses
> > \ListBase.as:1359]
> >     at 
> > 
> 
mx.controls.listClasses::ListBase/updateDisplayList()[E:\dev\3.1.0\frameworks\projects\fr
> amework\src\mx\controls\listClasses\ListBase.as:3657]
> >     at 
> 
mx.controls::List/updateDisplayList()[E:\dev\3.1.0\frameworks\projects\framework\src\m
> x\controls\List.as:1003]
> >     at 
> > 
> 
mx.controls.listClasses::ListBase/validateDisplayList()[E:\dev\3.1.0\frameworks\projects\f
> ramework\src\mx\controls\listClasses\ListBase.as:3279]
> >     at 
> 
mx.managers::LayoutManager/validateDisplayList()[E:\dev\3.1.0\frameworks\projects\fra
> mework\src\mx\managers\LayoutManager.as:605]
> >     at 
> > 
> 
mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\3.1.0\frameworks\projects\
> framework\src\mx\managers\LayoutManager.as:678]
> >     at Function/http://adobe.com/AS3/2006/builtin::apply()
> >     at 
> 
mx.core::UIComponent/callLaterDispatcher2()[E:\dev\3.1.0\frameworks\projects\framewo
> rk\src\mx\core\UIComponent.as:8565]
> >     at 
> 
mx.core::UIComponent/callLaterDispatcher()[E:\dev\3.1.0\frameworks\projects\framewor
> k\src\mx\core\UIComponent.as:8508]
> > 
> > And this is the argument which is passed to the "set data"-field 
> > implementation:
> > <type name="Object" isDynamic="true" isFinal="false" isStatic="false">
> >   <method name="hasOwnProperty" declaredBy="Object" returnType="Boolean" 
> uri="http://adobe.com/AS3/2006/builtin";>
> >     <parameter index="1" type="*" optional="true"/>
> >   </method>
> >   <method name="isPrototypeOf" declaredBy="Object" returnType="Boolean" 
> uri="http://adobe.com/AS3/2006/builtin";>
> >     <parameter index="1" type="*" optional="true"/>
> >   </method>
> >   <method name="propertyIsEnumerable" declaredBy="Object" 
> > returnType="Boolean" 
> uri="http://adobe.com/AS3/2006/builtin";>
> >     <parameter index="1" type="*" optional="true"/>
> >   </method>
> > </type>
> > 
> > Any input would be thankfull!
> > 
> > Best regards
> > 
> > --- In [email protected], "Alex Harui" <aharui@> wrote:
> > >
> > > If you get an runtime exception, always use a debug build and post the
> > > full stacktrace.
> > > 
> > >  
> > > 
> > > ________________________________
> > > 
> > > From: [email protected] [mailto:[EMAIL PROTECTED] On
> > > Behalf Of florian.salihovic
> > > Sent: Monday, August 18, 2008 9:30 AM
> > > To: [email protected]
> > > Subject: [flexcoders] ItemRenderer returns empty Object instead of
> > > encapsuled data.
> > > 
> > >  
> > > 
> > > I have two instances of mx:controls::List. Both use the same
> > > ItemRenderer. A TypeError 
> > > occours, when i drop one item from one List into the other List. Instead
> > > of the encapsuled 
> > > type (an instance of an interface, typed to the interface) just an empty
> > > Ombject instance is 
> > > returned.
> > > 
> > > I implement mx.core.IDataRenderer,
> > > mx.controls.listClasses.IDropInListItemRenderer and 
> > > mx.controls.listClasses.IListItemRenderer in my component. Here is the
> > > code for the 
> > > overwritten data and listData Propertys:
> > > 
> > > private var _item:IPlayListItem;
> > > private var _listData:BaseListData;
> > > 
> > > [Bindable("dataChange")]
> > > override public function get data():Object {
> > > return this._item;
> > > }
> > > 
> > > [Bindable("dataChange")]
> > > public function get listData():BaseListData {
> > > return this._listData
> > > }
> > > 
> > > override public function set data(value:Object):void {
> > > trace("ListItemRenderer.data: "+value);
> > > super.data = value;
> > > if (!value) {
> > > return;
> > > }
> > > if (this._item == value) {
> > > return;
> > > }
> > > if (value is IPlayListItem) {
> > > super.data = IPlayListItem(value);
> > > this._item = IPlayListItem(value);
> > > }
> > > this.dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
> > > 
> > > }
> > > 
> > > public function set listData(value:BaseListData):void {
> > > if (this._listData == value) {
> > > return;
> > > }
> > > this._listData = value;
> > > this.dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
> > > }
> > > 
> > > What am i missing?
> > > 
> > > Best regards!
> > >
> >
>



Reply via email to