2014-03-29 29 views
0

这是我的网格视图片段,我打算在网格中添加50个可绘制项目,我的问题是onclick方法。如何能够为这50个项目创建新的Activity类。我确实有一个工作正常的onClick方法,但添加50个case语句是痛苦的,有没有什么办法根据他们的类名动态地使用50个activity类。动态使用Android意图

公共类片段1扩展片段{

@Override 
    public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.gridview,container,false); 
     GridView gridView = (GridView) view.findViewById(R.id.gridview); 
     gridView.setAdapter(new ImageAdapter(getActivity())); // uses the view to get the context instead of getActivity(). 
     gridView.setOnItemClickListener(new OnItemClickListener() 
     { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View v, int position, 
        long arg3) { 
       // TODO Auto-generated method stub 
        Intent n = null; 

         switch(position){ 
         case 0: 
         n = new Intent(getActivity(), abc.class); 
          getActivity().startActivity(n); 
          break; 
         case 1: 
          n = new Intent(getActivity(), bcd.class); 
          getActivity().startActivity(n); 
          break; 
         case 2: 
          // n = new Intent(getActivity(), cbe.class); 
          getActivity().startActivity(n); 
          break; 

        } 
      } 
     }); 
     return view; 
    } 
    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
    } 
    public class ImageAdapter extends BaseAdapter { 
     private Context mContext; 

     public ImageAdapter(Context c) { 
      mContext = c; 
     } 

     public int getCount() { 
      return mThumbIds.length; 
     } 

     public Object getItem(int position) { 
      return null; 
     } 

     public long getItemId(int position) { 
      return 0; 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
       ImageView imageView; 
       if (convertView == null) { // if it's not recycled, initialize some attributes 
        imageView = new ImageView(mContext); 
        imageView.setLayoutParams(new GridView.LayoutParams(500, 500)); 
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
        imageView.setPadding(8, 8, 8, 8); 
       } else { 
        imageView = (ImageView) convertView; 
       } 

       imageView.setImageResource(mThumbIds[position]); 
       return imageView; 
      } 

     private Integer[] mThumbIds = { 
       R.drawable.car, 
       R.drawable.dabangg, 
       R.drawable.dabangg, 
       R.drawable.car, 
       R.drawable.car, 
       R.drawable.dabangg 
     }; 

     } 

} 
+2

如果你有50周以上的活动,你应该可能重新考虑你的设计。 –

+0

每个项目都链接到YouTube的片段。如果您在我的YouTube类中看到它在onInitializationsucess方法中有ArrayList。不知道如何传递这些数组列表值,因为每个值都有不同的值。 – Mihir

回答

1

也许你可以一键基础上,他们在网格中选择一个意图额外的项目活动通过。抓住传递的价值,做任何需要做的事情。

例子:

gridView.setOnItemClickListener(new OnItemClickListener() 
    { 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View v, int position, 
       long arg3) { 
         Myobject obj=(MyObject)adapter.getItem(position); 
         Intent intent=new Intent(CurrentActivity.this,NextActivity.class); 
         intent.putExtra("MY_KEY",obj.getMyValue()); 
         startActivity(intent); 
       } 
     } 
    }); 

然后在你的下一个活动的onCreate方法你做

int defaultValue=-1; 
int value=getIntent().getIntExtra("MY_KEY", defaultValue); 
switch (value){ 
case 0: 
break 

}

+0

嗨KennyC,谢谢你的回复,请你举个例子吧?我该如何在我的代码中实现它。 – Mihir

+0

看到我的编辑 – KennyC

+0

以上谢谢,但你能解释一下吗?什么是“你的下一个活动的onCreate方法”在做什么?你能给我看一个案例0的例子,我可以使用drawable,也有My_key的值。我很抱歉,但我对这些相当陌生。 – Mihir