Comunidad de diseño web y desarrollo en internet online

Duplicacion de eventos en itemRenderer en HorizontalList

Citar            
MensajeEscrito el 13 Feb 2009 02:31 pm
Estimados:

Hola a todos!!!!
Desde hace unos meses que he comenzado a trabajar con Flex y realmente es un software muy interesante.
Pero obviamente, nunca se esta exento de problemas:

Me ocurre lo siguiente, tengo un HorizontalList que muestra 4 columnas pero contiene 25. Como necesitaba tener dentro de cada item un NumericStepper agregue un itemRenderer por cada columna que consiste en unos Text y el NumericStepper. Todo bien con eso. El problema ocurre cuando por ejemplo cambio el valor del NumericStepper en la columna 1. Al mover el scroll para ver los demas items, el NumericStepper del item 4 cambio su valor al mismo del 1. Y esto se repite secuencialmente, si cambio los valores del NumericStepper 3, se cambian los del item 7,11, 15, 19, etc.

El HorizontalList lo alimento con un xml

Trabajo con Flex 3

saludos

Por borknagar

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Feb 2009 02:29 am
les dejo el codigo que estoy usando a ver si alguien me puede aclarar porque sucede ese comportamiento.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="fillArray()">
<mx:Script>
<![CDATA[
[Bindable]
private var elementos:Array;
public function fillArray():void{
elementos = new Array();
for(var i:int = 0; i < 20; i++){
elementos.push("elemento: " + i);
}
}

]]>
</mx:Script>
<mx:HorizontalList x="250" y="200" columnWidth="100" width="300" height="200" dataProvider="{elementos}">
<mx:itemRenderer>
<mx:Component>
<mx:NumericStepper>
<mx:minimum>0</mx:minimum>
<mx:maximum>100</mx:maximum>
</mx:NumericStepper>
</mx:Component>
</mx:itemRenderer>
</mx:HorizontalList>

</mx:Application>


Por ejemplo, si no defino minimo ni maximo para el item renderer, sucede el comportamiento de que se duplican los cambios en el valor del numericstepper. Pero si uso minimo y maximo, al scrollear el horizontallist, el numericstepper resetea su valor al minimo. Esto es correcto??

gracias

Por borknagar

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Feb 2009 02:38 am
Hola

Ya descubri el problema. Los HorizontalList y TileList manejan la memoria instanciando solamente los objetos que se estan mostrando. Esa es la razon por la que cada vez que scrollea el componente los itemsRenderer se resetean. Creo que para resolver este tema se usan los Repeater. Que probablemente manejen la memoria de manera menos eficiente ya que siempre estarian instanciados los elementos que contienen. Nunca los he usado asi que me preparo a estudiar.

saludos

Por borknagar

1 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.