--- In flexcoders@yahoogroups.com, "kyleashipley" <[EMAIL PROTECTED]> wrote: > > I have an architectural question concerning the use of sets of data > providers for a Tree control. > > We have a master list of Users for our chat application, which we > might need to filter and sort in various ways (buddies only, blocked > only, etc). For our buddy list, we were using an adapter-esque > solution to convert the list of users into a list of "buddy groups" > containing User objects underneath them. We recently stumbled across > the HierarchicalCollectionView and GroupingCollection objects and > decided those might be better than the overhead of a custom adapter > class, but we're having some trouble getting everything to sync up > correctly. > > We used the tutorial here to try to set up our collections correctly: > http://blog.tsclausing.com/post/20. Essentially, we have a list of > Users that is shared throughout the application. In our BuddyList > view, we have a ListCollectionView with list = masterUserList, with a > sort and filter applied as well. We then have a GroupingCollection > sorting on the User's groupName field. We then have a > HierarchicalCollectionView adapting the GroupingCollection for display > in a Tree control.
That's a great post, and it inspired me to produce this example http://flexdiary.blogspot.com/2008/09/groupingcollection-example- featuring.html > We see the data as expected, but we're having trouble figuring out > exactly how to keep everything in lock-step. Sometimes properties of > the User object change completely asynchronously -- if a User signs > off, we update their online status and need to reapply the sort on our > ListCollectionView, but we don't have a specific request/response, so > we can't rely on a command or delegate or anything. If we update the > model, it fires a COLLECTION_CHANGE event, but this doesn't seem to > fire every time in the bound ListCollectionView. We anticipated this > event would fire in the bound object as well, allowing us to call > refresh and invalidateDisplayList as necessary. If you only change a property of an item in a collection, I think you need to manually fire itemUpdated. HTH; Amy