如何通过单击列表视图的图像按钮来启动活动?

时间:2013-06-19 11:41:18

标签: android android-listview android-imageview

我有一个列表,当我点击图片时,每个项目中都有一张图片button我必须使用Activity启动另一个intent

以下是我的代码

我的问题是我无法从自定义适配器调用startActivity()! !

在自定义适配器的getView()

  holder.profilePicture.setOnClickListener(new OnClickListener() 
       { 
           public void onClick(View v) 
           {
               Log.d("OnImageButton","Clicked");
               Intent zoom=new Intent(AllProfile.getAppContext(), ImageZoom.class);
               int imageID=holder.profilePicture.getId();
               zoom.putExtra("ImageId", imageID);
               startActivity(zoom)  ; //This line raises error !      
                           }


       });

2 个答案:

答案 0 :(得分:6)

您应该在创建自定义适配器时将其传递给自定义适配器:

public class MyAdapter extends BaseAdapter {
    private Context mContext;

    public MyAdapter (Context ctx) {
        mContext = ctx;
    }

    ...
}

在getView中使用该上下文来启动Activity:

 holder.profilePicture.setOnClickListener(new OnClickListener() 
   { 
       public void onClick(View v) 
       {
           Log.d("OnImageButton","Clicked");
           Intent zoom=new Intent(mContext, ImageZoom.class);
           int imageID=holder.profilePicture.getId();
           zoom.putExtra("ImageId", imageID);
           mContext.startActivity(zoom)  ; //This line raises error !      
                       }


   });

在Activity中创建适配器时,应将“this”作为参数传递:

 mAdapter = new MyAdapter(this);

答案 1 :(得分:0)

你尝试过这个:

MainActivity.this.startActivity(zoom);