Ver Mensaje Individual
  #3 (permalink)  
Antiguo 01/05/2010, 21:48
Avatar de jahepi
jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 11 meses
Puntos: 43
Respuesta: Problea labelField y dataProvider

Hola gorkamu89 !

Ahorita no me voy a meter en la dudas del labelField, quiero ver la parte de como obtienes y generas los datos.

Te propongo esta solución que es más intuitiva, la idea es que a partir de los archivos XML generar colecciones de objetos del tipo Disco, teniendo estos datos te será más sencillo generar la parte gráfica.

Por ejemplo, tenemos la siguiente estructura en el XML:
Código XML:
Ver original
  1. <discos>
  2.  
  3.     <disco>
  4.     <artista>Artista 1</artista>
  5.     <canciones>
  6.         <t>track1</t>
  7.         <t>track2</t>
  8.     </canciones>
  9.     </disco>
  10.    
  11.     <disco>
  12.     <artista>Artista 2</artista>
  13.     <canciones>
  14.         <t>track1</t>
  15.         <t>track2</t>
  16.     </canciones>
  17.     </disco>
  18.  
  19.     <disco>
  20.     <artista>Artista 3</artista>
  21.     <canciones>
  22.         <t>track1</t>
  23.         <t>track2</t>
  24.     </canciones>
  25.     </disco>
  26.  
  27. </discos>

Ahora si generamos nuestra clase Disco que encapsulará toda la información genérica:

Código actionscript:
Ver original
  1. package {
  2.  
  3.     public class Disco
  4.     {
  5.         private var artista:String
  6.         private var canciones:Array;
  7.    
  8.         public function Disco(artista:String)
  9.         {
  10.             this.artista = artista;
  11.             canciones = new Array();
  12.         }
  13.        
  14.         public function agregarCancion(cancion:String):void
  15.         {
  16.             canciones.push(cancion);
  17.         }
  18.        
  19.         public function obtenerCancion(index:int):String
  20.         {
  21.             return canciones[index];
  22.         }
  23.    
  24.         public function numeroCanciones():int
  25.         {
  26.             return canciones.length;
  27.         }
  28.        
  29.         public function obtenerArtista():String
  30.         {
  31.             return artista;
  32.         }
  33.     }
  34. }

La clase contiene como atributos el nombre del artista y la lista de canciones, puedes preguntarle a la clase por el número de canciones, por determinada canción, etc.

Ahora la idea es generar instancias de esta clase con la ayuda del XML:
Código actionscript:
Ver original
  1. package {
  2.    
  3.     import flash.events.Event;
  4.     import flash.net.URLRequest;
  5.     import flash.net.URLLoader;
  6.    
  7.     public class Main
  8.     {
  9.         public static function main():void
  10.         {
  11.             var loader:URLLoader = new URLLoader();
  12.             loader.load(new URLRequest("discos.xml"));
  13.             loader.addEventListener(Event.COMPLETE, Main.materializar);
  14.         }
  15.        
  16.         private static function materializar(evt:Event):void
  17.         {
  18.             var discosCol:Array = new Array();         
  19.             var xml:XML = new XML(evt.target.data);
  20.             var discos:XMLList = xml.disco;
  21.             for each (var disco:XML in discos) {
  22.                 var discoObj:Disco = new Disco(disco.artista);
  23.                 var canciones:XMLList = disco.canciones;
  24.                 for each (var cancion:XML in canciones.children()) {
  25.                     discoObj.agregarCancion(cancion);
  26.                 }
  27.                 discosCol.push(discoObj);
  28.             }
  29.         }
  30.     }
  31. }

La variable discosCol contiene todos los objetos Disco, estos los tendrás disponibles dentro de la aplicación, con esta información puedes generar tus lista de artistas así como mostrar las canciones de ese artista, solo falta meterle talacha a la parte de presentación (MXML).

Un saludote !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.