Okay, entered as https://bugs.adobe.com/jira/browse/SDK-19145
if anyone is interested in voting for it or watching it. On Thu, Feb 5, 2009 at 1:56 PM, kuroiryu42 <kuroiry...@yahoo.com> wrote: > Yep its a bug, didn't bother to look it up but if you need a work around > you could extend and override the combobox collectionChangeHandler > look for the reset kind and remove the listener at that point. > > --- In flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>, Pan > Troglodytes <chimpathe...@...> > wrote: > > > > > I'm running into something fairly perplexing. Read the following > code and > > think of what you'd expect it to do when you click the change > button. Then > > run it and click the change button. > > > > <?xml version="1.0" encoding="utf-8"?> > > <mx:Application > > xmlns:mx="http://www.adobe.com/2006/mxml" > > layout="vertical" > > creationComplete="cc()" > > > > > <mx:Script> > > <![CDATA[ > > import mx.collections.ArrayCollection; > > > > public var d1:ArrayCollection = new > ArrayCollection([{label:"one"}, > > {label:"two"}, {label:"three"}]); > > public var d2:ArrayCollection = new ArrayCollection([{label:"a"}, > > {label:"b"}, {label:"c"}]); > > //public var d1:Array = [{label:"one"}, {label:"two"}, > > {label:"three"}]; > > //public var d2:Array = [{label:"a"}, {label:"b"}, {label:"c"}]; > > > > private function cc():void > > { > > c1.dataProvider = d1; > > c1.dataProvider = d2; > > c1.selectedIndex = 1; > > } > > > > private function change():void > > { > > trace(); > > trace(); > > trace(" before change: "); > > trace(" c1.selectedIndex:", c1.selectedIndex); > > trace(" c1.selectedItem: ", c1.selectedItem.label); > > > > d1.removeItemAt(0); > > //d1.splice(0, 1); > > > > trace() > > trace(" after change: "); > > trace(" c1.selectedIndex:", c1.selectedIndex); > > trace(" c1.selectedItem: ", c1.selectedItem.label); > > } > > ]]> > > </mx:Script> > > <mx:ComboBox id="c1"/> > > <mx:Button label="change" click="change()"/> > > </mx:Application> > > > > > > What does it do? Well, the combobox changes from saying "b" to "a". > The > > trace says the following: > > before change: > > c1.selectedIndex: 1 > > c1.selectedItem: b > > > > after change: > > c1.selectedIndex: 0 > > c1.selectedItem: b > > > > This is completely baffling. My only guess is that somewhere in the > guts of > > combobox or its ancestors, it is registering for changes on a > dataProvider > > and not unregistering them when the dataProvider changes. List does not > > seem to suffer the same problem. > > > > If you comment out the ArrayCollection-based version and uncomment the > > Array-based version, it works as expected. > > > > My next stop is a bug report, but I figured it'd be worth bringing up in > > case anyone already knows of a bug report (kind of hard criteria to > search > > for) or a workaround if you need to use ArrayCollections. > > > > -- > > Jason > > > > > -- Jason