如何将图像传递到ArrayList<;字符串>;在Android中?

如何将图像传递到ArrayList<;字符串>;在Android中?,android,image,arraylist,Android,Image,Arraylist,我有一种情况,我需要设置一个图像列表,但我无法这样做,因为我不知道如何将字符串数组列表传递给位图 代码: private void setImageBit(String item, ImageView imageView){ path = android.os.Environment.getExternalStorageDirectory() + File.separator + "Pictures" + File.separator + "SanPics2";

我有一种情况,我需要设置一个图像列表,但我无法这样做,因为我不知道如何将字符串数组列表传递给位图

代码:

        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”,但我需要在砌体视图中设置更多的图像。例如,见下文。我想在下面描述的视图中动态设置从相机拍摄的图像。但我无法做到这一点

我还尝试了
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);

但这似乎返回了一组空的图像。没有图像的空白白页。如果需要,我很乐意为您提供更多的代码。任何帮助都将不胜感激。请提前感谢,并随时询问任何澄清。

您只需使用位图创建ArrayList,如下所示:

ArrayList<Bitmap> img_bitmap
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;
}
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();

                }
并存储到位图数组列表中,如下所示:

ArrayList<Bitmap> img_bitmap
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;
}
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();

                }
for(int i=0;i

最后,将图像逐个加载到grid view ImageAdapter中。

您只需创建带有位图的ArrayList,如下所示:

ArrayList<Bitmap> img_bitmap
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;
}
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();

                }
并存储到位图数组列表中,如下所示:

ArrayList<Bitmap> img_bitmap
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;
}
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();

                }
for(int i=0;i

最后,将一个一个图像加载到grid view ImageAdapter中。

@M D。感谢您的回复。但您必须注意,我正在从android设备中的文件夹加载图像,图像名称将动态存储为图像1、2,等等(增加计数器值,还使用共享首选项存储最后一个值)。如果是这种情况,那么我将如何实现File imgFile=new File(“/data/data/package/app\u my\u sub\u dir/images/”+File\u name);是否需要获取上次存储的计数值并进行相应设置?@San此url使用了我的me。这是我的要求,但你可以添加你的网址到这个。按您的方式剪切。@M D。我不是指文件中的URL,而是关于如何设置图像名称的查询?提前感谢。@San在这种情况下,您可以创建一个字符串ArrayList并将图像名称逐个添加到此ArrayList中,然后可以将此图像名称传递到我的“ImgBitFromFile(字符串文件\u路径,字符串图像名称)”中。我猜下面是你的意思。整数计数=20;对于(int i=1;i@MD.感谢您的回复。但您注意到,我正在从android设备中的文件夹加载图像,图像名称将动态存储为图像1,2,依此类推(增加计数器值,还使用共享首选项存储最后一个值)。如果是这种情况,那么我如何实现File imgFile=new File(“/data/data/package/app\u my\u sub\u dir/images/”+File\u name);我是否需要获取上次存储的计数值并进行相应设置?@San此url使用了我的me。这是我的要求,但您可以将您的url添加到此中。按您的方式剪切。@M D。我不是指文件中的url,而是关于如何设置图像名称的查询?提前谢谢。@San在这种情况下,您可以创建字符串ArrayList并添加图像s名称一个接一个地输入到这个arraylist中,您可以将这个图像名称传递到我的“ImgBitFromFile(String file_path,String imagename)”中。获取它我猜以下是您的意思。int count=20;for(int i=1;i