0

내 애플 리케이션의 메인 화면에 나타나는 ArrayCollection 있습니다. 나는 이전에 선택된 색인에 대한 견해를 강요하기 위해 나의 코드를 가지고 있었다. 이제이 배열 컬렉션에 검색 바를 구현했습니다. 선택한 색인이 검색 색인과 일치하지 않습니다. 전의. 선택한 인덱스 == 0을 A1c 계산기로 사용했습니다. BMI 계산기를 검색하는 경우 A1c가됩니다. 선택된 인덱스 == 0에 있기 때문에 A1c가됩니다.선택한 인덱스로보기를 반환하는 방법. 플렉스 (플래시 빌더)

언제 어떻게 A1c를 당기면 항상 접근합니까? 어떤 색인인지에 관계없이 A1c가 선택되는 식으로 계속 진행됩니다. 여기 코드가 있습니다.

  '<?xml version="1.0" encoding="utf-8"?> 
      <s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" title="iCalculate"> 


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

       <s:layout> 
        <s:VerticalLayout paddingTop="10"/> 
       </s:layout> 
       <fx:Script> 
        <![CDATA[ 
         import mx.collections.ArrayCollection; 
         import mx.collections.ArrayList; 
         import mx.events.IndexChangedEvent; 
         import mx.utils.object_proxy; 

         import spark.collections.Sort; 
         import spark.collections.SortField; 
         import spark.components.Image; 
         import spark.components.ViewMenu; 
         import spark.events.IndexChangeEvent; 



         // This method contains the selection assignments for the        Calculator Views 
         protected function calcList_changeHandler(event:IndexChangeEvent):void 
         { 

          if (calcList.selectedIndex == 0)//A1c Calculator 
          { 
           navigator.pushView(views.A1CCalculator); 
          } 
          else if (calcList.selectedIndex ==1)//BMI Calculator 
          { 
           navigator.pushView(views.BMI_Calculator); 
          } 
          else if (calcList.selectedIndex ==2)//GPA Calculator 
          { 
           navigator.pushView(views.GPA_Calculator); 
          } 
          else if (calcList.selectedIndex ==3)//TIP Calculator 
          { 
           navigator.pushView(views.TipCalculator); 
          } 

         } 


        //Below This Line is the code for the Filter Feature 
        private function filterList():void{ 
         calcListCollection.filterFunction=searchList; 
         calcListCollection.refresh(); 

        } 
        private function searchList(item:Object):Boolean{ 
         var isMatch:Boolean = false 
          if(item.name.toLowerCase().search(search.text.toLowerCase())!=-1){ 
           isMatch = true 
          } 
          return isMatch; 
        } 
        private function clearSearch():void{ 
         calcListCollection.filterFunction=null; 
         calcListCollection.refresh(); 
         search.text=""; 

        } 




        ]]> 
       </fx:Script> 
       <s:HGroup width="100%" height="43"> 
        <s:TextInput id="search" width="100%" prompt="Search iCalculate" textAlign="center" change="filterList()"/> 

       </s:HGroup> 

       <s:List id="calcList" alternatingItemColors="[#e5e4e4,#ffffff]" 
         width="100%" 
         height="98%" 
         labelField="name" 
         change="calcList_changeHandler(event)"> 
        <s:dataProvider> 

         <s:ArrayCollection id="calcListCollection"> 
          <fx:Object name="A1c Calculator" /> 
          <fx:Object name="BMI Calculator" /> 
          <fx:Object name="GPA Calculator" /> 
          <fx:Object name="Tip Calculator" /> 

         </s:ArrayCollection> 
        </s:dataProvider> 
       </s:List> 

       <s:Label width="100%" click="navigator.pushView(views.CompanyDetail)" color="#1021C7" 

'

은 사전에 감사합니다. 당신은보기를 식별하는 데에도 selectedIndex를 사용 두지 :

라이언

답변

1

나는 이유라고 생각합니다.

<fx:Object viewId="A1c" name="A1c Calculator"/> 

및 목록 변경 이벤트 핸들러는보기를 표시하는 "는 viewId"를 사용할 수 있습니다 :

그래서 당신은 당신의 ArrayList의 개체에 대한 "는 viewId"속성을 추가 할 수 있습니다

if (calcList.selectedItem.viewId == "A1c")//A1c Calculator 
{ 
    navigator.pushView(views.A1CCalculator); 
} 
+0

당신은 말 그대로을 천재. 이걸 보여 주셔서 고마워요. 나는 이것을 내 코드 내에서 구현하려고한다. 지금까지는 효과가있는 것 같습니다. 다시 한번 감사합니다. ALL Heil Simmone 롤. –

+0

코드를 검토 한 후 가장 좋은 방법은 뷰 ID를 만드는 것입니다. GUI에있는 거의 모든 구성 요소에 ID를 추가 할 수 있다는 사실을 실제로 배웠습니다. 이 정보가 다른 사람들을 도왔 으면 좋겠습니다. –

관련 문제