从android库中获取图像并放入gridview

时间:2012-08-26 21:48:28

标签: android gridview image-gallery

我正在寻找关于如何做到这一点的一些建议。

我希望有一个用户从Android图库中选择的活动,然后图像将被添加到活动的网格视图中。我已经成功地单独实施了两个,但是当我必须将它们组合起来时,我感到很茫然。网格视图教程是here。问题是网格视图教程使用res / drawable中的图像,因此我从图库中获取的uri并不完全正常。

我应该如何在ImageAdapter类中设置图像?我一直在尝试使用手机中其中一个图像的uri地址来做imageView.setImageBitmap(位图),但它没有用。

我正在考虑创建一个String的ArrayList,其中包含从库中获取的图像的uri。这样我就可以轻松添加,删除和存储图像。

除此之外的其他问题是,如果我显示图像,如果我再次调用setAdapter,它会刷新吗?如果我从源ArrayList中删除,会自动删除工作吗?

谢谢

以下是我编辑的网格视图中的代码:

public class ImageAdapter extends BaseAdapter {
    private Context mContext;

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

    public int getCount() {
        return imageId.size();
    }

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

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

    // create a new ImageView for each item referenced by the Adapter
    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(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }


        Uri targetUri = Uri.parse(tests.get(0));
        //tests contains the uri of the photo i'm trying to import from my phone gallery in string form
        Bitmap bitmap;
        bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(targetUri));
        imageView.setImageBitmap(bitmap);

        return imageView;
    }
}

1 个答案:

答案 0 :(得分:2)

回答第一部分:如果您的测试包含您选择的图片的Uri,只需使用imageView.setImageURI(targetUri)

回答第二部分:要刷新GridView,只需调用mGridView.invalidateViews(),您的整个GridView将被重绘,因此您的源中发生的任何更改都将在此处反映出来。无需再次调用setAdapter()。当您第一次绘制网格时,setAdapter()最初只会被调用一次。之后,只需使用invalidateViews()来刷新它。