2013-06-27 163 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 
} 

现在,你可以通过页面数量这种方法