Tim, did you try that in Flex 2? I seem to recall it being a bug. Alex Harui Flex SDK Developer Adobe Systems Inc.<http://www.adobe.com/> Blog: http://blogs.adobe.com/aharui
From: [email protected] [mailto:[email protected]] On Behalf Of Tim Hoff Sent: Monday, April 06, 2009 12:17 PM To: [email protected] Subject: [flexcoders] Re: ListCollectionView w/ a filterFunction as a dataProvider - Flex 2 Hmm, ran your code and it worked fine. Clicked the add item button the first time and "1" showerd up. Maybe try adding filtered_stuff.refresh(); to the addItem function. -TH --- In [email protected], "bnjmnhggns" <bhigg...@...> wrote: > > Hi all, I've been having weird problems involving Lists, dataProviders, > ListCollectionViews with and ArrayCollections. I was able to reproduce one of > my problems below. > > I have a ListCollectionView (filtered_stuff) that's viewing an > ArrayCollection (stuff). stuff initially just has one element. filtered_stuff > has a filterFunction that filters out this element. > > Here's the weird part. Clicking on Add item once does not show the added item > in the List. Clicking on Add item again will result in TWO items showing up > in the list. After that, clicking Add item behaves as you might expect. > > Why is it behaving this way? > > Thanks, > > Ben > > Code: > > <?xml version="1.0"?> > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> ! > <mx:Panel title="List dataProvider test" creationComplete="onCreate()" > paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10"> > > <mx:List id="list" width="100%" dataProvider="{filtered_stuff}"/> > <mx:Button click="addItem()" label="Add item"/> > </mx:Panel> > > <mx:Script> > <![CDATA[ > import mx.collections.ListCollectionView; > import mx.collections.ArrayCollection; > > [Bindable] public var stuff:ArrayCollection; > [Bindable] public var filtered_stuff:ListCollectionView; > > public function addItem():void { > trace("adding item", stuff.length); > stuff.addItem({label: stuff.length}); > } > > public function onCreate():void { > stuff = new ArrayCollection([{label: 0}]); > filtered_stuff! = new ListCollectionView(stuff); > filtered_stuff.! fil terFunction = function(item:Object):Boolean { > return item.label > 0; > } > filtered_stuff.refresh(); > } > ]]> > </mx:Script> > </mx:Application> >

