ActionScript 3 :: Access List / DataProvider From Custom CellRenderer
Dec 14, 2010
The code below sets up a List object in the main controller class that uses a custom cell renderer (CustomListCell class). the CustomListCell class creates a Button object for the cell that will be used to delete itself from the List's DataProvider. How can I properly access the parent List object from its custom cell renderer?
//Controller Class
private function createList():void {
provider = new DataProvider(data);
list = new List();
list.width = 200;
list.height = 400;
[Code] .....
I have a Game-sprite representing a game room with up to 3 players, it works ok. And would like to populate a List component with those Game's, based on an XML data coming from a socket.I've prepared a simple test case demonstrating my problem -ListTest.fla (should have a List component in its Library):
I have a combobox that I need to style with colors from xml. I call this XML file in the same class that has my combobox instance and break out the color I need to a var.
I then use MyCellRenderer (a class that extends CellRenderer) to style the drop down list items like so:
This all works perfectly with a hardcoded color already inside the MyCellRenderer class.
My problem is when I instantiate MyCellRenderer and try to pass the color through I get the following error when I click the combobox open:
Code: ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller. at flash.display::DisplayObjectContainer/removeChild() at fl.controls::List/drawList() at fl.controls::List/draw() at fl.core::UIComponent/callLaterDispatcher()
Is it possible to instantiate a class that extends CellRenderer? If not why not?
how can I pass a variable to my custom CellRenderer class?
I recently used fl.controls.List to implement a list with custom CellRenderer.I did it by implementing ICellRenderer:[code]Inside MyRenderer I added a fl.controls.Button, then set its label. However, when the List is rendered (by dynamically adding item into its dataProvider), the button body is not rendered, only the label is rendered. When I move my mouse over it, the button is then properly rendered.I found this strange, then tried use myButton.drawNow() in constructor. The problem seem to be solved. Now the button is rendered, but the label is not at the very center of the button (it's a bit towards right). Then, when I move my mouse over it again, the label move to the center, and everything's ok.This may be a minor problem, but I just wonder why this is happening. Why must drawNow() to be called? Why the label is not properly placed even when drawNow() is called?
This is my first time working with a class attached to a movieclip that is nested inside a class attached to a movie clip.I've tested all the properties and methods of PTListItem.as and they work properly but when I try to call them on the list item through PTListTop.as it returns undefined.The end goal is to dynamically load a checklist via a txt file.
I'm using a List which I need to be empty at the start. I'm adding items to it as needed by clicking a button. Since it's empty, I haven't added a dataProvider property
<s:List id="thelist" itemRenderer="listIR" />
To add an item, I'm adding it to the dataProvider directly
thelist.dataProvider.addItem()
but when I do that, it gives me this error
#1009: Cannot access a property or method of a null object reference.
Also I have a debugging Alert in the listIR itemRenderer itself and I see that when the list is created, I get that alert twice as if 2 itemRenderers were created, even though the list is supposed to be empty at the start.
How do I start with an empty dataProvider and add items smoothly to it?
In Flex I can create an ItemRenderer to represent each item in the Lists DataProvider but how do I access the instance of the ItemRenderer via the DataProviders Object? Something like myList.getItemRenderer(dp.getItemAt(10));
I have a component that contains a list that implements a custom renderer. I use this component as a tooltip, keeping one in memory and just altering the databindings as necessary.
Something like this where TTComponent is a class that extends Canvas:
Now, what happens is when data containing many items is set to tt.data, the list resizes itself larger and displays fine. However, after this, if data containing few items is set to tt.data, the component momentarily displays larger than it needs to be, then resizes itself smaller.
What I'd like to do is have the component resize itself before it displays, so I don't see the resize on screen.
I have a list (LIST#1) of artists: 2Pac Adele Amerie Beyonce Jason Aldean Shakira The Trews
I also have a list (LIST#2) that has the values #,A-Z - how would I create an alphabet jump? So If a user clicked on "A" in LIST#2 that would automatically scroll to "Adele" at the top of LIST#1 - not filter so he/she could scroll up to view 2Pac or down to view The Tews if they were not in the view yet. Its a standard Flex Spark List with an ArrayCollection as the dataProvider - the artist field is called: "title" along with a unique id field that is not visible to the user.
private function alphabet_listChange(evt:IndexChangeEvent) : void { var letter:String; letter = evt.currentTarget.selectedItems[0].toString(); trace(currentDictionary[letter]); ui_lstLibraryList.ensureIndexIsVisible(currentDictionary[letter]); [Code] ......
I have this error. I am very very new to the Flex world. I have this function which returns an ArrayList. public function createDataProvider():ArrayList { .... return new ArrayList(imgArray); }
Later, I use it here: <s:List id="pubmapList" dragEnabled="false" dropEnabled="false" dragMoveEnabled="false" dataProvider="{createDataProvider}"> Here, I got an error saying: implicit coercion of a value of type to an unrelated type mx.collections.ilist. I thought the IList implementation includes ArrayList.
In flex 4.5, I have an application that has a BorderContainer that loads a spark list (mxml style - _myList and the borderContainer is stored in a library outside of the parent application) that loads an arrayCollection with an itemRenderer (I should note said itemRenderer is not an inline renderer - on selection of an item in the list, the itemRenderer expands, loads a particular control within the item renderer based on data passed from the selected item in the list) and allows the user to perform a search. This works all well and good on startup/load, until I try to change the dataProvider for the list (my app allows users to switch data sources which then creates a new dataProvider with new variables). I have tried:
Objective:I would like to pass Skins to an itemRenderer (which is a Button) of a List, and be able to skin every button in that List.This is what I have:
I have a simple list and a background refresh protocol.When the list is scrolled down, the refresh scrolls it back to the top. I want to stop this.I have tried catching the COLLECTION_CHANGE event and validateNow(); // try to get the component to reset to the new datalist.ensureIndexIsVisible(previousIndex); // actually, I search for the previous data id in the IList, but that's not importantThis fails because the list resets itself after the change).I hate to use a Timer, ENTER_FRAME, or callLater(), but I cannot seem to figure out a way.The only other alternatives I can see is sub-classing the List so it can catch the dataProviderChanged event the DataGroup in the skin is throwing.
Im working at a DataGrid which has a custom itemRenderer with a checkbox and a Label inside. Im struggling adding the the values from a xml to the wright label dynamically... how can I make the connection from the datagrid's dataProvider (a xml doc) to the label and the checkbox? My itemRenderer loks a following:
what I need to do is combine 5 arrays with 5 individual strings (which have come from a JSON webservice) into one single list item in FlashBuilder Burrito. [code]I've pulled these out successfully and each one traces in the debugger, although as I need them all in the same list I'm struggling to establish them as a dataprovider together.If I push the strings and arrays together it is impossible to read properly, as the main Titles are at a different level to any descriptors for the products which are in the arrays.
The selectedIndex is associated with an HSlider, but that is not the problem. My issue is that I would like to automatically select a certain "preferred" element from the list (only initially...to guide the user).
I tried to do that in a creationComplete event but my data hadn't shown up yet...setting selectedIndex didn't work..
Here am getting array of groups(groupName,GroupID each row ) from a RemoteObject and displaying in a ComboBox. I am selecting the groups with selectedIndex as 0,1,2,3, but I want my groupIDs of correspoding groupnames,which am bringing to client side.
How can I get actual the groupId of the selected group?
I have a TileList that is fed by a DataProvider. The DataProvider places a source Class (and corresponding MovieClip) into the TileList as visual and interactive objects. [code]...
package components { public class templateSelection extends VBox { static public var tempSelectionBag:Dictionary;
[Code]....
I want to have a custom class tempSelection with a Dictionary as a public accessable property of that class. If I use this code, the compiler tells me:
1046: Typ wurde nicht gefunden oder war keine Kompilierungszeit- onstante:Dictionary
Which translates to:
Type was not found or was not a compile-time constant: Dictionary
I've added an eventListener to the COLLECTION_CHANGE event that is fired when the grid is finished resorting the items in its dataProvider, after the user clicks on a column header:MyType (myDataGrid.dataProvider).addEventListener(CollectionEvent.COLLECTION_CHANGE,onDataGridResort);
Is there any way to get a list of custom classes? I'd like to be able to dynamically access the custom classes (that I've created by the "Export for Actionscript" checkbox in the "Linkage" dialog) without having to hard-code their names into the script.
how to change the look of an MX 2004 List component? It took me 3 hours just to learn how to change the colors of the list, but I see no way to change the look of the scrollers or drag bar. I need to make everything other than the scroll arrows a pale purple color (basically, rendering them invisible): 0x99889B [URL]
I'm trying to extend the mx:Box container so that two buttons sit on the outside of the container to cycle through it's contents (similar to a scrollbar).
I've made a custom component that looks basically like "mx:HBox->mx:Button mx:Box mx:Button" where the buttons and box are children of the hbox.
How do I offer the user access to the box (say its dataProvider and itemRenderer) through my custom component?
So they just need to write 'local:MyCustomComponent dataProvider="rar" itemRenderer="rar"/>' and my box inside that component can use it?
Is it possible to set custom color for rows in a flex list depending on the data in it.I know how to define a custom itemrenderer and do it but I would likr to know whether there is any simple method because I don't want more components in the list
I'm using a custom itemrenderer to display a list of photos and need to know how to control the width. At the moment it does this: Which, as I'm sure you'll agree, is eye-bleedingly ugly. The list is created like this: