2011-09-02 3 views
0

사용자가 내 모바일 Flex 응용 프로그램에서 선택한 항목의 값을 가져 오는 데 문제가 있습니다. 목록에서 항목을 선택하면 해당 항목을 ArrayCollection에 배치합니다. 그러나 값 (trace())을 확인할 때 값은 [object object]이며 객체의 실제 값에 액세스 할 수없는 것처럼 보입니다.목록에서 선택한 항목의 값에 액세스 할 때 문제가 발생했습니다.

는 조언과 통찰력 주셔서 대단히 감사합니다 [개체 개체] : 추적에서

private var selectedPlayers:ArrayCollection = new ArrayCollection(); 
      private var numOfPlayers:int; 
... 

//check if item is not already in selected players list 
       if(!selectedPlayers.contains(playerList.selectedItem)) 
       { 

        //add the selected item to the selected players list 
        selectedPlayers.addItem(playerList.selectedItem); 
        numOfPlayers++; 
        trace("selected Players: " + selectedPlayers); 

       } 

출력() :

선택한 플레이어를 여기에 내가 뭐하는 거지입니다.

UPDATE :

[Bindable] 
      public static var selectedPlayers:ArrayCollection = new ArrayCollection([ 
       {Name: "testname" }]); 

... 

//check if item is not already in selected players list 
       if(!selectedPlayers.contains(playerList.selectedItem.PName)) 
       { 
        //add the selected item to the selected players list 
        selectedPlayers.addItem({Name: playerList.selectedItem.PName}); 
        numOfPlayers++; 
       } 
+0

BR 프랭크. – shanethehat

+0

내가 추적 ("선택한 선수 :"+ selectedPlayers.getItemAt (0)) 나는 동일한 출력을 얻을. – Jordan

답변

1

이제 ArrayCollection의 구조가 아닙니다.

클릭 처리기의 두 번째 추적은 AC의 속성 "이름"을 반환합니다. 속성 이름으로 업데이트하십시오.

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" 
       minWidth="955" minHeight="600" 
       initialize="application1_initializeHandler(event)"> 

    <fx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 

      private var selectedPlayers:ArrayCollection = new ArrayCollection([ 
       {Name:"iTunes", id:"1"}, 
       {Name:"MediaPlayer", id:"2"}, 
       {Name:"WinAmp", id:"3"}]) 

      protected function button2_clickHandler(event:MouseEvent):void 
      { 
       // TODO Auto-generated method stub 
       trace ("selectedPlayers: " + selectedPlayers) 
       trace (selectedPlayers.getItemAt(0).Name); 

      } 
     ]]> 
    </fx:Script> 


    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 



    <fx:Script> 
     <![CDATA[ 
      import mx.events.FlexEvent; 

      protected function application1_initializeHandler(event:FlexEvent):void 
      { 
       // TODO Auto-generated method stub 

      } 



     ]]> 
    </fx:Script> 

    <s:Button label="trace" click="button2_clickHandler(event)" /> 

</s:Application> 

모든 플레이어 이름이 필요한 경우 루프가 필요합니다. 이 경우에, 나는 또한 너를 도울 수있다.

당신은 그것을 내에서 전체의 ArrayCollection이 아닌 특정 항목을 추적하고

+0

완벽하게 작동합니다. 하지만 selectedPlayers ArrayCollection을 빈 속성으로 설정하려면 어떻게해야합니까? 예 : 이름 : -playerList.selectedItem- – Jordan

+0

업데이트 : 고맙습니다. 알아 냈습니다. 정말 고맙습니다! – Jordan

+0

환영합니다. 행복한 코딩 :-) – Frank

1

Firist 문제는 ​​당신이 배열, 배열에서가 아닌 특정 항목을 추적하는 것입니다 : 여기에 작업 코드입니다. 이것은 코멘트에서 언급되었다.

두 번째 문제는 ArrayCollection의 요소가 가장 가능성있는 개체라는 것입니다. 객체를 추적 할 때 toString() 메서드를 사용하여 문자열로 변환됩니다. toString() 메서드를 구현하지 않으면 defaul 또는 [object Object]이 표시됩니다.

개체를 추적 할 때 다른 출력을 보려면 toString() 메서드를 구현할 수 있습니다.

또한 코드를 디버그 모드로 실행하고 변수를 사용하여 실제로 컬렉션에있는 것을 볼 수 있습니다.

관련 문제