2013-06-27 85 views
-5

目前,我有3個陣列。我正在嘗試幾個小時。我能否以任何動態方式實現此功能?對於我For循環沒有工作。有沒有什麼辦法來動態地實現這一點。如果你們幫助解決這個問題,我會很高興。動態執行switch語句

switch(pageNumber){ 
      case 0: 
       final ListView list1 = (ListView)rootView.findViewById(R.id.list); 
       BinderData bindingData = new BinderData(this.getActivity(), d[0]); 
       list1.setAdapter(bindingData); 
       list1.setOnItemClickListener(new OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
         if (d[0].get(position).getItemType() == 0 
           || d[0].get(position).getItemType() == 3 
           || d[0].get(position).getItemType() == 2) 
          return; 
         Intent intent = new Intent(Schedule.this.getActivity(), 
           ContentExtended.class); 
         intent.putExtra("title", d[0].get(position).getTitle()); 
         intent.putExtra("content", d[0].get(position).getContent()); 
         startActivity(intent); 
        } 
       }); 
       break; 
      case 1: 
       final ListView list2 = (ListView)rootView.findViewById(R.id.list); 
       BinderData bindingData1 = new BinderData(this.getActivity(), d[1]); 
       list2.setAdapter(bindingData1); 
       list2.setOnItemClickListener(new OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
         if (d[1].get(position).getItemType() == 0 
           || d[1].get(position).getItemType() == 3 
           || d[1].get(position).getItemType() == 2) 
          return; 
         Intent intent = new Intent(Schedule.this.getActivity(), 
           ContentExtended.class); 
         intent.putExtra("title", d[1].get(position).getTitle()); 
         intent.putExtra("content", d[1].get(position).getContent()); 
         startActivity(intent); 
        } 
       }); 
       break; 
      case 2: 
       final ListView list3 = (ListView)rootView.findViewById(R.id.list); 
       BinderData bindingData2 = new BinderData(this.getActivity(), d[2]); 
       list3.setAdapter(bindingData2); 
       list3.setOnItemClickListener(new OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
         if (d[2].get(position).getItemType() == 0 
           || d[2].get(position).getItemType() == 3 
           || d[2].get(position).getItemType() == 2) 
          return; 
         Intent intent = new Intent(Schedule.this.getActivity(), 
           ContentExtended.class); 
         intent.putExtra("title", d[2].get(position).getTitle()); 
         intent.putExtra("content", d[2].get(position).getContent()); 
         startActivity(intent); 
        } 
       }); 
       break; 

     } 
+1

什麼是「對我來說環路沒有工作」是什麼意思? – Blackbelt

+0

我不認爲'Switch'是'for-loop'的替代品。你爲什麼想? –

+0

對(INT I ..; I <計數;我++){BinderData bindingData =新BinderData(this.getActivity(),d [I]);} – user1563221

回答

2

對我來說,除了d數組索引外,整個代碼都被複制。因此,這將是這樣的:

public void method(int pageNumber) { 
    final ListView list = (ListView)rootView.findViewById(R.id.list); 
    BinderData bindingData = new BinderData(this.getActivity(), d[pageNumber]); 
    list.setAdapter(bindingData); 
    list.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
      if (d[pageNumber].get(position).getItemType() == 0 
          || d[pageNumber].get(position).getItemType() == 3 
          || d[pageNumber].get(position).getItemType() == 2) 
       return; 
      Intent intent = new Intent(Schedule.this.getActivity(), 
          ContentExtended.class); 
      intent.putExtra("title", d[pageNumber].get(position).getTitle()); 
      intent.putExtra("content", d[pageNumber].get(position).getContent()); 
      startActivity(intent); 
     } 
    }); 
} 
0

上的onClick支票是PAGENUMBER我看到了,在每種情況下我看到的唯一區別是數組d的索引。試試onClick方法:

 final ListView list1 = (ListView)rootView.findViewById(R.id.list); 
     BinderData bindingData = new BinderData(this.getActivity(), d[pageNumber]); 
     list1.setAdapter(bindingData); 
     list1.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
       if (d[0].get(position).getItemType() == 0 
         || d[pageNumber].get(position).getItemType() == 3 
         || d[pageNumber].get(position).getItemType() == 2) 
        return; 
       Intent intent = new Intent(Schedule.this.getActivity(), 
         ContentExtended.class); 
       intent.putExtra("title", d[pageNumber].get(position).getTitle()); 
       intent.putExtra("content", d[pageNumber].get(position).getContent()); 
       startActivity(intent); 
      } 
     }); 
+0

我試過了。但是,意圖不工作! – user1563221

+0

什麼是例外? –

+0

的java琅ArrayIndexOutOfBoundsException異常 – user1563221

0

你不能使用loops進行切換。你可以使用if。因爲我看到你的代碼只在數組d索引的每種情況下有所不同。所以你不想切換或者其他的。

public void onClick(int pageNumber) { 
//your implementaion 
} 

現在,你可以通過頁面數量這種方法