OnClick转到GridView Android中的新活动

时间:2015-09-09 06:32:04

标签: android gridview

我从相机拍摄照片并将它们存储在GridView中,现在当我查看它们时没有OnClick功能来放大或转到新的活动来放大所选图像,这是代码:

在何处实施OnClick方法,将所选图像转换为新活动并将其放大

package com.example.veeresh.myphotogallery;


public class Photo_1 extends AppCompatActivity implements OnClickListener {

Button captureBtn = null;
final int CAMERA_CAPTURE = 1;
private Uri picUri;
private DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private GridView grid;
private List<String> listOfImagesPath;
private String path;
private String pathMusic;




@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_photo);
    int pos = 0;
    path = " ";

    pathMusic = getIntent().getStringExtra("Store to Music");


    if(pathMusic != null)
    {
        path = pathMusic;

    }




    captureBtn = (Button) findViewById(R.id.capture_btn1);
    captureBtn.setOnClickListener(this);
    grid = (GridView) findViewById(R.id.gridviewimg);

    listOfImagesPath = null;
    listOfImagesPath = RetriveCapturedImagePath();
    if (listOfImagesPath != null) {
        grid.setAdapter(new ImageListAdapter(this, listOfImagesPath));
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
    if (arg0.getId() == R.id.capture_btn1) {

        try {
   //use standard intent to capture an image
             Intent captureIntent = new           Intent(MediaStore.ACTION_IMAGE_CAPTURE);
     //we will handle the returned data in onActivityResult
            Toast.makeText(this, "Launching Camera",    Toast.LENGTH_SHORT).show();
            startActivityForResult(captureIntent, CAMERA_CAPTURE);
        } catch (ActivityNotFoundException anfe) {
   //display an error message
            String errorMessage = "Whoops - your device doesn't support    capturing images!";
            Toast toast = Toast.makeText(this, errorMessage,    Toast.LENGTH_SHORT);
            toast.show();
        }
    }

}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
 //user is returning from capturing an image using the camera
        if (requestCode == CAMERA_CAPTURE) {
            Bundle extras = data.getExtras();
            Bitmap thePic = extras.getParcelable("data");
            String imgcurTime = dateFormat.format(new Date());
            File imageDirectory = new File(path);
            imageDirectory.mkdirs();
            String _path = path + imgcurTime + ".jpg";
            try {
                FileOutputStream out = new FileOutputStream(_path);
                thePic.compress(Bitmap.CompressFormat.JPEG, 90, out);
                out.close();
            } catch (FileNotFoundException e) {
                e.getMessage();
            } catch (IOException e) {
                e.printStackTrace();
            }
            listOfImagesPath = null;
            listOfImagesPath = RetriveCapturedImagePath();
            if (listOfImagesPath != null) {
                grid.setAdapter(new ImageListAdapter(this, listOfImagesPath));
            }
        }
    }
}

private List<String> RetriveCapturedImagePath() {
    List<String> tFileList = new ArrayList<String>();
    File f = new File(path);
    if (f.exists()) {
        File[] files = f.listFiles();
        Arrays.sort(files);

        for (int i = 0; i < files.length; i++) {
            File file = files[i];
            if (file.isDirectory())
                continue;
            tFileList.add(file.getPath());
        }
    }
    return tFileList;
}

public class ImageListAdapter extends BaseAdapter {
    private Context context;
    private List<String> imgPic;

    public ImageListAdapter(Context c, List<String> thePic) {
        context = c;
        imgPic = thePic;
    }


    public int getCount() {
        if (imgPic != null)
            return imgPic.size();
        else
            return 0;
    }

    //---returns the ID of an item---
    public Object getItem(int position) {
        return position;
    }

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

    //---returns an ImageView view---
    public View getView(int position, View convertView, ViewGroup parent) 
    {
        ImageView imageView;
        BitmapFactory.Options bfOptions = new BitmapFactory.Options();
        bfOptions.inDither = false;                     //Disable Dithering mode
        bfOptions.inPurgeable = true;                   //Tell to gc that whether it needs free memory, the Bitmap can be cleared
        bfOptions.inInputShareable = true;              //Which kind of reference will be used to recover the Bitmap data after being clear, when it will be used in the future
        bfOptions.inTempStorage = new byte[32 * 1024];
        if (convertView == null) {
            imageView = new ImageView(context);
            imageView.setLayoutParams(new GridView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
            imageView.setPadding(0, 0, 0, 0);
        } else {
            imageView = (ImageView) convertView;
        }
        FileInputStream fs = null;
        Bitmap bm;
        try {
            fs = new FileInputStream(new File(imgPic.get(position).toString()));

            if (fs != null) {
                bm = BitmapFactory.decodeFileDescriptor(fs.getFD(), null, bfOptions);
                imageView.setImageBitmap(bm);
                imageView.setId(position);
                imageView.setLayoutParams(new GridView.LayoutParams(300, 600));
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fs != null) {
                try {
                    fs.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }

        return imageView;
    }
}

}

1 个答案:

答案 0 :(得分:1)

使用girdview的setOnItemClickListener

grid = (GridView) findViewById(R.id.gridviewimg);

grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // TODO Auto-generated method stub
            Toast.makeText(this, "you clicked at : " + position, Toast.LENGTH_LONG).show();
            // put your intent here to open activity
        }
    });