2008-12-04 5 views
1

J'ai un contrôle de liste où je veux montrer une chaîne (c'est bien) mais aussi un carré coloré. Imaginez que j'ai un bouton "Ajouter un lecteur" une entrée de texte avec un sélecteur de couleur. Je veux voir la couleur + nom du joueur dans la liste. Comment pourrais-je faire ça?Flex List contrôle plus d'une chaîne?

[Bindable] 
public var data:ArrayCollection = new ArrayCollection(); 


<mx:List id="eqlist" width="100%" dataProvider="{data}" /> 



data.addItem(fooTxt.text); 

Ce code ajoutera que la valeur de texte, dois-je ajouter un objet hbox composé d'une valeur de toile + texte en couleur?

Merci,

Répondre

7

Vous devez travailler avec Liste itemRenderers. Fondamentalement, le rendu d'élément de liste (ListItemRenderer) ne prend pas en charge une couleur de fond différente par élément (la couleur d'arrière-plan ne peut être définie que sur Parent de liste).

Exemple (version MXML - pas ma façon préférée, mais le plus simple):

initialisation du fournisseur de données:

  var anObject: Object = new Object(); 
      anObject.label = "my player"; 
      anObject.backgroundColor = 0xFF0000; 
      anObject.color = 0xFFFFFF; 
      aData.addItem(anObject); 

      anObject = new Object(); 
      anObject.label = "my player 2"; 
      anObject.backgroundColor = 0x0000FF; 
      anObject.color = 0xAAAAAA; 
      aData.addItem(anObject); 

Affichage de la liste:

<mx:List id="eqlist" width="100%" dataProvider="{aData}" > 
     <mx:itemRenderer> 
      <mx:Component> 
       <mx:Canvas backgroundColor="{data.backgroundColor}" 
        color="{data.color}"> 
        <mx:Label text="{data.label}"> 

        </mx:Label> 
       </mx:Canvas> 
      </mx:Component> 
     </mx:itemRenderer> 
    </mx:List>