nossa nao sabia dessa reciclagem...

deu pra ter uma ideia legal.

valeu Mario.

2010/12/28 Mário Júnior <[email protected]>

> Acontece que os componentes baseados em lista (ListBased) possuem uma
> arquitetura interessante onde eles reaproveitam os itemRenderers,
> reciclando-os.
>
> Explicando de forma bem rapida:
> - Se vc possue um grid com 1000 linhas, mas somente 10 estão exibidas, o
> datagrid (ou qualquer outro list-based) irá criar só 12 renderers, e não os
> 1000. Isso faz com q a performance do componente seja melhorada, afinal pra
> q criar 988 renderers q nao sao exibidos???
>
> - Agora vc me pergunta: "Mas pq criou 12 se só exibe 10?" Acontece q o
> componente cria um renderer a mais "para baixo" e outro a mais "para cima"
> para q o efeito de rolagem não fique prejudicado.
>
>
> - E como os outros 988 registros são mostrados?
> R: É aí q entra a "reciclagem de componentes". A cada vez q o componente
> sofre uma rolagem, ele pega o objeto do data provider e seta no ultimo
> renderer, e a partir do penultimo ele re-seta o item anterior no renderer de
> cima. (ou de baixo qnd a rolagem é pra cima).
> É uma "dança das cadeiras", onde o objeto do renderer 10 passa para o 9, o
> do 9 passa para o 8, o do 8 passa para o 7... e assim respectivamente.
>
> É nessa hora q vc entende o porquê de sobrescrever o set data, pois nessa
> 'dança das cadeiras' é q o set data é invocado para passar o novo item para
> um renderer já criado, sucessivamente.
>
>
> Tudo isso é feito diretamente pelo componente baseado em lista q usa os
> renderers (todos q extendem de ListBased -  datagrid, list, hosrizontallist,
> etc...), mas isso no Flex 3.x
>
> Já no Flex 4.x SDK isso não é mais responsabilidade do componente
> list-based, mas do Layout que o componente usa, isso qnd se ativa a opção
> useVirtualLayout=true, onde a "mecânica" é um pouquinho mais complexa q a já
> existente, mas muda de lugar.
> Detalhe q no Flex4, para se ter uma "lista" com dados complexos, precisa
> usar o DataGroup com o Layout apropriado, e não esquecer de usar
> DefaultComplexItemRenderer como classe renderer.
>
>
> Espero ter compreendido :)
>
>
> []'s
>
>
>
>
>
>
> Em 28 de dezembro de 2010 11:18, Pablo Souza <[email protected]>escreveu:
>
> Olá Helio!
>>
>> Todas as classes que implementam a interface mx.core.IDataRenderer
>> suportam essa propriedade.
>>
>> No caso do exemplo que te enviei, a classe é a MXItemRenderer e você
>> verá essa relação da seguinte forma:
>> MXItemRenderer EXTENDS DataRenderer EXNTEDS DataRenderer IMPLEMENTS
>> IDataRenderer.
>>
>> Caso você precise criar um item renderer ou item editor customizado
>> basta fazer com que seu componente implemente a interface
>> IDataRenderer.
>>
>> A propriedade data contêm todo o dataprovider da linha e não somente o
>> valor para aquela coluna que você setou o item renderer.
>>
>>
>> Abs!
>>
>>
>>
>> ------
>> Pablo Souza
>> http://rectius.com.br
>> @pablo_souza
>>
>>
>> On Dec 28, 10:54 am, Helio Antonio Francisco Silva
>> <[email protected]> wrote:
>> > A unica diferença desse seu exemplo pro meu foi isso aqui
>> >
>> > *
>> >
>> > override* *public* *function* *set* data
>> > Colocando essa funcao os valores aparecem, sem ela os valores vem
>> nulos...
>> > poderia me explicar o por que disso ?
>> >
>> > 2010/12/27 pablo.souza <[email protected]>
>> >
>> >
>> >
>> >
>> >
>> > > Crie seu componente com a classe MXDataGridItemRenderer, que perrmite
>> > > você use componentes Spark como itemrenderes do mx DataGrid.
>> >
>> > > <s:MXDataGridItemRenderer
>> > > xmlns:fx="http://ns.adobe.com/mxml/2009";
>> > > xmlns:s="library://ns.adobe.com/flex/spark"
>> > > xmlns:mx="library://ns.adobe.com/flex/mx"
>> > > focusEnabled="true">
>> > >        <fx:Script>
>> > >                <![CDATA[
>> >
>> > >                        override public function set
>> data(value:Object):void
>> > >                        {
>> > >                                super.data = value;
>> > >                        }
>> >
>> > >                ]]>
>> > >        </fx:Script>
>> >
>> > >        <s:BorderContainer
>> > >                id="statusBorder"
>> > >                horizontalCenter="0" verticalCenter="0"
>> > >                width="8" height="8" cornerRadius="18"
>> > >                dropShadowVisible="false"/>
>> >
>> > > </s:MXDataGridItemRenderer>
>> >
>> > > Abs!
>> >
>> > > On Dec 27, 4:42 pm, Helio Antonio Francisco Silva
>> > >  <[email protected]> wrote:
>> > > > Pessoal estou com uma baita dor de cabeça com o maldito itemrender
>> no
>> > > flex4.
>> > > > To passando certinho como em uns exemplos na net e nao funciona.
>> >
>> > > > No flex3 eu fazia assim tambem era muito EASY e no flex 4 to tomando
>> bola
>> > > =(
>> > > > alguem me ajuda por favor.
>> >
>> > > > <mx:DataGrid width="744" height="468" paddingRight="2"
>> id="ContratosDG"
>> > > > fontFamily="Verdana" fontSize="10" >
>> >
>> > > > <mx:columns>
>> >
>> > > > <mx:DataGridColumn fontFamily="Verdana"
>> itemRenderer="components.legend"
>> > > > fontSize="10" fontWeight="bold" headerText="Status" width="40"
>> > > dataField="
>> > > > CSTATUS"/>
>> >
>> > > > <mx:DataGridColumn fontFamily="Verdana" fontSize="10"
>> fontWeight="bold"
>> > > > headerText="Filial" width="40" dataField="FILIAL"/>
>> >
>> > > > <mx:DataGridColumn fontFamily="Verdana" fontSize="10"
>> fontWeight="bold"
>> > > > headerText="Contrato" width="60" dataField="CONTRATO"/>
>> >
>> > > > <mx:DataGridColumn fontFamily="Verdana" fontSize="10"
>> fontWeight="bold"
>> > > > headerText="Cliente" width="60" dataField="CODIGO"/>
>> >
>> > > > <mx:DataGridColumn fontFamily="Verdana" fontSize="10"
>> fontWeight="bold"
>> > > > headerText="Nome" width="250" dataField="NOME"/>
>> >
>> > > > <mx:DataGridColumn fontFamily="Verdana" fontSize="10"
>> fontWeight="bold"
>> > > > headerText="Tipo Contrato" width="80" dataField="TIPOCONTRA"/>
>> >
>> > > > </mx:columns>
>> >
>> > > > </mx:DataGrid>
>> >
>> > > > Componente
>> >
>> > > > <?xml version="1.0" encoding="utf-8"?>
>> >
>> > > > <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009";
>> >
>> > > > xmlns:s="library://ns.adobe.com/flex/spark"
>> >
>> > > > xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
>> >
>> > > > <fx:Declarations>
>> >
>> > > > <!-- Place non-visual elements (e.g., services, value objects) here
>> -->
>> >
>> > > > </fx:Declarations>
>> >
>> > > > <fx:Script>
>> >
>> > > > <![CDATA[
>> >
>> > > > *public* *var* nome:String = *new* String();
>> >
>> > > > ]]>
>> >
>> > > > </fx:Script>
>> >
>> > > > <mx:Image height="15" width="15" />
>> >
>> > > > </s:Group>
>> >
>> > > > --
>> > > > *Hélio Antonio Fransico Silva*
>> > > > Desenvolvedor web
>> > > > Certificado Flash developer
>> > > > Certificado Flash Design
>> > > > Certificado web developer
>> > > > Consultor Microsiga / Totvs
>> > > > Desenvolvedor ADVPL / ASP
>> > > > Analista de sistemas e ERP Sênior.
>> >
>> > >  --
>> > > Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> > > Para enviar uma mensagem, envie um e-mail para
>> [email protected]
>> > > Para sair da lista, envie um email em branco para
>> > > [email protected]
>> > > Mais opções estão disponíveis emhttp://
>> groups.google.com/group/flexdev
>> >
>> > --
>> > *Hélio Antonio Fransico Silva*
>> > Desenvolvedor web
>> > Certificado Flash developer
>> > Certificado Flash Design
>> > Certificado web developer
>> > Consultor Microsiga / Totvs
>> > Desenvolvedor ADVPL / ASP
>> > Analista de sistemas e ERP Sênior.- Hide quoted text -
>> >
>> > - Show quoted text -
>>
>> --
>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> Para enviar uma mensagem, envie um e-mail para [email protected]
>> Para sair da lista, envie um email em branco para
>> [email protected]
>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>>
>
>
>
> --
> Mario Junior
> http://blog.mariojunior.com/
> @mariojunior
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para [email protected]
> Para sair da lista, envie um email em branco para
> [email protected]
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>



-- 
*Hélio Antonio Fransico Silva*
Desenvolvedor web
Certificado Flash developer
Certificado Flash Design
Certificado web developer
Consultor Microsiga / Totvs
Desenvolvedor ADVPL / ASP
Analista de sistemas e ERP Sênior.

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a