I've checked in a new example: flex-asjs/examples/flexjs/ListExample. Let me know if this is close to what you are looking for.
—peter On 12/2/16, 3:41 PM, "Peter Ent" <p...@adobe.com> wrote: >I have something working now. It took a bit more doing than I'd like, but >it is relatively clean. I have to create a new example for this or add it >to an existing example. But here is the overview: > >I created a new component called GenericList (since SimpleList is already >taken). On the SWF side this is a DisplayObject and on the JS side it is a ><div>. If you override createElement in the COMPILE::JS section, you could >make this a <ul>. > >The idea is that the items generated by the itemRenderer factory become >children of this component element (eg, <div> or <ul>). To do that, and >make use of the existing layout code, GenericList implements >IItemRendererParent (so the item renderer factory knows which parent >should be used for the items it creates), ILayoutParent, and ILayoutHost. >Basically, it is everything since there is no other UI elements except for >the itemRenderers. > >GenericListView does not extend ListView because that leads to this >nesting business we are trying to avoid. Instead, it just extends >BeadViewBase and implements IListView (so it can provide the dataGroup for >the itemRenderer factory which will be the strand/GenericList itself). >This class makes sure the itemRenderer factory bead is installed and >listens for changes to the dataProvider in the model. > >Finally, I had to copy DataItemRendererFactoryForArrayData into a new >class because it explicitly references the org.apache.flex.html.List class >in order to pass along the labelField to each itemRenderer. This, to me, >is a problem that needs to be addressed. I probably wrote this originally, >but now it must be revisited and corrected. > >When the beads get fired up and the dataProvider has been set, the factory >discovers the dataGroup from the IListView and begins making >itemRenderers. I kept with StringItemRenderer, but you could use an >itemRenderer that created <li> elements on the JS side. > >The result HTML looks like: > ><div class="GenericList" …> > <div class="StringItemRenderer">Widgets</div> > <div class="StringItemRenderer">Thingys</div> >… ></div> > >As I said, I have to package this example up. This really makes me want to >rethink a bit the complexity of the List classes, but more important, >there are too many concrete classes being used instead of interfaces. > >Let me know if this seems more like what you are looking for. > >—peter > >On 12/2/16, 12:48 PM, "carlos.rov...@gmail.com on behalf of Carlos Rovira" ><carlos.rov...@gmail.com on behalf of carlos.rov...@codeoscopic.com> >wrote: > >>excelent Peter! I'll be waiting for this :) >> >>2016-12-02 15:47 GMT+01:00 Peter Ent <p...@adobe.com>: >> >>> I will be looking into this, this morning (shortly). Just for >>>background: >>> >>> The ListView creates two things: an outer containment area (div) to >>>house >>> the chrome (scroll bars, title bars, footer bars, etc) and the content >>> area (ContainerContentArea). >>> >>> When we first set this up, the JS side wasn't supposed to create two >>> things since scroll bars are handled by the browser. But when we >>>decided >>> there were other "chrome" pieces, the nesting happened. >>> >>> If things are set up right, just making something an ILayoutHost the >>> returns itself as the content area should be enough; its what I did for >>> the MXMLItemRenderer (it is both ILayoutHost and ILayoutParent). The >>> ILayoutHost is the object which returns which of its children (or >>>itself) >>> is the ILayoutParent. The ILayoutParent is the thing which will be the >>> parent of all of the ILayoutChild objects. >>> >>> I will put an example together today which shows a simpler List without >>> the nesting. >>> >>> ‹peter >>> >>> On 12/1/16, 7:40 PM, "Peter Ent" <p...@adobe.com> wrote: >>> >>> >I'll look into this tomorrow. >>> > >>> >Peter >>> > >>> > >>> >On Dec 1, 2016, at 7:09 PM, Carlos Rovira <carlosrov...@apache.org> >>> wrote: >>> > >>> >>> >>> >>> Anyway, Peter might be able to better answer your question, but it >>> >>>appears >>> >>> that if you create some new subclass of UIBase and have it return >>> >>>'this' >>> >>> for layoutHost and contentView, that the ListView might then just >>>stick >>> >>> the children in the outer div. See how MXMLItemRenderer (which I >>> >>> mentioned upthread) differs from ListBase in that way. There might >>>be >>> >>> some bugs to iron out, but that's my understanding of how it is >>> >>>supposed >>> >>> to work. >>> >>> >>> >>> -Alex >>> >>> >>> >>> >>> >> Hi, >>> >> >>> >> Peter as Alex says you could be of great help here, hope you could >>>help >>> >> getting a simple example since I think is crucial for MDL List >>>component >>> >> (and other comps that uses the same behaviour). >>> >> >>> >> I'll try to investigate about layoutHost and contentView as Alex >>> >>mention to >>> >> be able to remove the middle div layer that List View generates. My >>> >>target >>> >> is to get a List that throws: >>> >> >>> >> <ul> >>> >> <li/> >>> >> <li/> >>> >> </ul> >>> >> >>> >> and <li/> elements data will be provided by a dataProvider Array and >>>the >>> >> layout (the li or whatever we want) by an itemRenderer. >>> >> >>> >> As I get this I'll update some MDL comps that will benefit from this >>> >> refactor a part from List (TabBar, NavigationBar,...) >>> >> >>> >> >>> >> >>> >> -- >>> >> Carlos Rovira >>> >> http://about.me/carlosrovira >>> >>> >> >> >>-- >> >>Carlos Rovira >>Director General >>M: +34 607 22 60 05 >>http://www.codeoscopic.com >>http://www.avant2.es >> >>Este mensaje se dirige exclusivamente a su destinatario y puede contener >>información privilegiada o confidencial. Si ha recibido este mensaje por >>error, le rogamos que nos lo comunique inmediatamente por esta misma vía >>y >>proceda a su destrucción. >> >>De la vigente Ley Orgánica de Protección de Datos (15/1999), le >>comunicamos >>que sus datos forman parte de un fichero cuyo responsable es CODEOSCOPIC >>S.A. La finalidad de dicho tratamiento es facilitar la prestación del >>servicio o información solicitados, teniendo usted derecho de acceso, >>rectificación, cancelación y oposición de sus datos dirigiéndose a >>nuestras >>oficinas c/ Paseo de la Habana 9-11, 28036, Madrid con la documentación >>necesaria. >