如何将图像传递到Android中的ArrayList <string>?</string>

时间:2014-01-08 05:02:29

标签: android image arraylist

我遇到需要设置图像列表的情况,我无法做到这一点,因为我不知道如何将字符串数组列表传递给位图。

代码:

        private void setImageBit(String item, ImageView imageView){
        path = android.os.Environment.getExternalStorageDirectory() + File.separator + "Pictures" + File.separator + "SanPics2";
        File file = new File(path,"Image 5.jpg");
        String item = file.toString();
        Bitmap bitmap = BitmapFactory.decodeFile(item);
        float i = ((float) imageWidth) / ((float) bitmap.getWidth());
        float imageHeight = i * (bitmap.getHeight());
        FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) imageView.getLayoutParams();
        params.height = (int) imageHeight;
        params.width = (int) imageWidth;
        imageView.setLayoutParams(params);
        imageView.setImageBitmap(bitmap);

    }

我知道上述代码只会设置指定的“Image 5.jpg”,但我需要在 MASONRY VIEW 中设置更多图像。见下面的例子。我想动态地设置从下面描绘的视图中的相机拍摄的图像。但我无法做到这一点。

enter image description here

我也试过decodeByteArray()会得到数组(我会传递数组中的路径列表)但是这似乎不起作用导致将字符串路径转换为字节不能按预期工作。而且我还尝试了以下

   path = android.os.Environment.getExternalStorageDirectory() + File.separator + "Pictures" + File.separator + "SanPics2";
   File file = new File(path);
   Bitmap bitmap = BitmapFactory.decodeFile(path);
   imageView.setImageBitmap(bitmap);

但这似乎返回了一组空图像。没有图像的空白页。如果需要,我很乐意为您提供更多代码。任何帮助将受到高度赞赏。在此先感谢您,并随时要求澄清。

1 个答案:

答案 0 :(得分:4)

您只需要创建带有Bitmap的ArrayList,如下所示:

ArrayList<Bitmap> img_bitmap

现在,只需使用以下功能逐个加载图像并将其存储到位图arrylist中,如下所示:

public static Bitmap ImgBitFromFile(String file_name) {

    File imgFile = new File(
            "/data/data/package/app_my_sub_dir/images/" + file_name);
    //System.out.println("Image Exists:::" + imgFile.getAbsolutePath().toString());
    if (imgFile.exists()) {
        // System.gc();
        Bitmap myBitmap = BitmapFactory.decodeFile(imgFile
                .getAbsolutePath());
        //System.out.println("Image Exists:::");

        return myBitmap;
    }
    return null;
}

并存储到位图arraylist中,如下所示:

for (int i = 0; i < c.getCount(); i++) {

            if(c.getString(3)!="") {

                img_bitmap.add(ImgBitFromFile(c.getString(5)));//Image path from Database
                img_name.add(c.getString(3));
                    }
                    c.moveToNext();

                }

并最后将逐个图像加载到网格视图ImageAdapter中。