Yeap, mas a minha List é Spark. :) O comportamento é ligeiramente diferente. Não existe o scrollToIndex. E o updateComplete é chamado também quando há um clique no item (provocando um scroll erróneo).

JS

On 19-02-2010 15:23, Nuno Fernandes wrote:
Tive a debruçar-me sobre o problema ....

e descobri isto que é muito nice

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"; layout="vertical" xmlns:local="*" xmlns:controls="com.adobe.flex.extras.controls.*"
creationComplete="handleCreationComplete()">
<mx:Script>
<![CDATA[
import mx.events.CollectionEvent;
import mx.collections.ArrayCollection;
        [Bindable]
        private var myData:ArrayCollection = new ArrayCollection();
        private function handleCreationComplete():void{
for(var i:int = 1; i < 50; i++){
var t:Object = new Object();
t="option " + i
myData.addItem(t);
}
        }
        private function handleCC():void{
testel.scrollToIndex(myData.length);
        }
            private function handleBt():void{
for(var i:int = 50; i < 100; i++){
var t:Object = new Object();
t="option " + i
myData.addItem(t);
}
myData.refresh();
            }
        ]]>
</mx:Script>
<mx:List id="testel" dataProvider="{myData}" updateComplete="handleCC()">
</mx:List>
<mx:Button click="handleBt()" label="click" />
</mx:Application>


ainda tens uma flag Boolean chamada updateCompletePendingFlag informa se um componente já passou pelas 3 fases do layout validation.. segundo os docs :)

2010/2/19 Nuno Fernandes <[email protected] <mailto:[email protected]>>

    Epa posso ter entendido mal, tu queres que a lista faça um scroll
    automatico ou que se pocisione no fim?

    2010/2/19 João Saleiro <[email protected]
    <mailto:[email protected]>>

        Nuno,

        a ideia é fazer Scroll do List, e só o posso fazer depois do
        List ter terminado o seu processo de actualização de UI - que
        acontece depois do collectionChange.
        Uma das soluções propostas é escutar o collectionChange,
        marcar uma flag a true que indica que os dados mudaram, e no
        updateComplete do List ver se essa flag esta a true. Em caso
        afirmativo, deve ser colocada a false, e ser aplicado o
        scroll. ...Mas cheira-me demasiado a hack....

        JS


        On 19-02-2010 15:02, Nuno Fernandes wrote:
        João assim de cabeça, se o myData for um Arraycollection
        podes adicionar um eventListener CollectionChange e depois na
        função que faz o handler só tens que dizer  a List que o seu
        selected index é igual ao lenght (talvez lenght -1) do myData


        2010/2/18 João Saleiro <[email protected]
        <mailto:[email protected]>>

            Boas,

            preciso de fazer scroll para o final de um <s:List quando
            o dataProvider do mesmo muda (quando é atribuido, ou
            quando os seus valores são alterados). Obviamente, só
            posso fazer scroll depois do List ser redesenhado, e
            criado o scroller, portanto preciso do evento certo para
            o momento certo. O dataProvider é atribuído por Binding:

            <s:List dataProvider="{myData}"/>

            Sugestões?


-- João Saleiro
            Chief Technology Officer
                
                        
            Tlm 1: +351 916 077 097     Skype: joao.saleiro
            Tlm 2: +351 968 203 370     Email/MSN:
            [email protected] <mailto:[email protected]>

                
                
            www.webfuel.pt <http://www.webfuel.pt>

-- Recebeu esta mensagem porque está inscrito no grupo
            "Mailing List da Comunidade Portuguesa de Rich Internet
            Applications - www.riapt.org <http://www.riapt.org>" dos
            Grupos do Google.
            Para publicar uma mensagem neste grupo, envie um e-mail
            para [email protected] <mailto:[email protected]>.
            Para anular a inscrição neste grupo, envie um e-mail para
            [email protected]
            <mailto:riapt%[email protected]>.
            Para ver mais opções, visite este grupo em
            http://groups.google.com/group/riapt?hl=pt-PT.


-- Recebeu esta mensagem porque está inscrito no grupo "Mailing
        List da Comunidade Portuguesa de Rich Internet Applications -
        www.riapt.org <http://www.riapt.org>" dos Grupos do Google.
        Para publicar uma mensagem neste grupo, envie um e-mail para
        [email protected] <mailto:[email protected]>.
        Para anular a inscrição neste grupo, envie um e-mail para
        [email protected]
        <mailto:[email protected]>.
        Para ver mais opções, visite este grupo em
        http://groups.google.com/group/riapt?hl=pt-PT.
-- Recebeu esta mensagem porque está inscrito no grupo "Mailing
        List da Comunidade Portuguesa de Rich Internet Applications -
        www.riapt.org <http://www.riapt.org>" dos Grupos do Google.
        Para publicar uma mensagem neste grupo, envie um e-mail para
        [email protected] <mailto:[email protected]>.
        Para anular a inscrição neste grupo, envie um e-mail para
        [email protected]
        <mailto:riapt%[email protected]>.
        Para ver mais opções, visite este grupo em
        http://groups.google.com/group/riapt?hl=pt-PT.



--
Recebeu esta mensagem porque está inscrito no grupo "Mailing List da Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" dos Grupos do Google. Para publicar uma mensagem neste grupo, envie um e-mail para [email protected]. Para anular a inscrição neste grupo, envie um e-mail para [email protected]. Para ver mais opções, visite este grupo em http://groups.google.com/group/riapt?hl=pt-PT.

--
Recebeu esta mensagem porque está inscrito no grupo "Mailing List da Comunidade 
Portuguesa de Rich Internet Applications - www.riapt.org" dos Grupos do Google.

Para publicar uma mensagem neste grupo, envie um e-mail para 
[email protected].
Para anular a inscrição neste grupo, envie um e-mail para 
[email protected].
Para ver mais opções, visite este grupo em 
http://groups.google.com/group/riapt?hl=pt-PT.

<<image/gif>>

<<image/gif>>

<<image/gif>>

<<image/gif>>

<<image/gif>>

<<image/gif>>

Responder a