1

我正在开发android应用程序。在我的应用程序中,我想从图库视图中的sd卡片文件夹中显示图像。我正在使用BaseAdapter。我试图从我的项目中的资源文件夹中的可绘制文件夹中显示图像,它工作正常。 我尝试下面的代码:在图库视图中显示sd卡片文件夹中的图像(android)

public class ImageAdapter extends BaseAdapter { 

private Context context; 
public static Integer[] imageIDs={ 
     R.drawable.sp1,R.drawable.sp2, 
     R.drawable.sp3,R.drawable.sp4, 
     R.drawable.sp5,R.drawable.sp6, 
     R.drawable.sp7,R.drawable.sp8, 
     R.drawable.sp9 
}; 

public ImageAdapter(Context context){ 
    this.context=context; 
} 
@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return imageIDs.length; 
} 

@Override 
public Object getItem(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 

@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 

@Override 
public View getView(int position, View 
     convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    ImageView image=new ImageView(context); 
    image.setImageResource(imageIDs[position]); 
    image.setAdjustViewBounds(true); 
    image.setLayoutParams(new Gallery.LayoutParams(120,120)); 
    image.setScaleType(ImageView.ScaleType.FIT_CENTER); 
    return image; 
} 

现在我想显示从SD卡文件夹的图像和画廊的格式显示它们。 因为我试图获得数组中的所有图像,但我不知道如何以数组格式获取它们。我可以通过以下方式访问sd文件夹中的图像。

File path = new File(Environment.getExternalStorageDirectory()+"/download/sp1.jpg"); 

如何获得他们所有的阵列格式和画廊view.Or显示它们是有显示它们的阵列,而不是任何其他替代方法?

需要帮助....谢谢....

回答

1

请参见下面的代码

if (android.os.Environment.getExternalStorageState().equals(
      android.os.Environment.MEDIA_MOUNTED)) { 

     // It have to be matched with the directory in SDCard 
     boolean exist = new File(Environment.getExternalStorageDirectory() 
       + File.separator + "download").exists(); 
     if (exist) { 
      File f = new File(Environment.getExternalStorageDirectory() 
        + File.separator + "download"); 

      File[] files = f.listFiles(); 
      File file; 
      for (int i = 0; i < files.length; i++) { 
       file = files[i]; 
       Bitmap bitmap = decodeFile(file); 
       return bitmap;  
      } 
     } 
    } 

你能做到这一点way

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return files.length; 
} 



@Override 
public View getView(int position, View 
     convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    ImageView image=new ImageView(context); 

    //image.setImageResource(imageIDs[position]); 
    File file = files[position] 
    Bitmap bitmap = decodeFile(file); 
    image.setImageBitmap(bitmap); 

    image.setAdjustViewBounds(true); 
    image.setLayoutParams(new Gallery.LayoutParams(120,120)); 
    image.setScaleType(ImageView.ScaleType.FIT_CENTER); 
    return image; 
} 
+0

Nirali谢谢你的回复。我试过你的解决方案。我想以阵列格式存储所有图像。我试过** public Bitmap [] bitmapArray = new Bitmap []; **并将所有位图值存储在数组中。但在定义位图数组时,它给了我错误**变量必须提供任一维度表达式或数组初始化** – nilkash 2012-07-27 05:34:54

+0

请参阅我编辑了我的答案。你不能这样做 – Nirali 2012-07-27 05:42:46

+0

hye Nirali你解决方案工作正常。我做了一些改变**位图位= BitmapFactory.decodeFile(file.getPath()); **我也想在另一个视图中使用所有这些图像;所以我将这些位图值存储在位图数组中......谢谢 – nilkash 2012-07-27 06:29:05

1

您需要加载图像作为位图:

getView(...){ 
File f = new File(directory, filename); 
Bitmap bitmap = BitmapFactory.decodeFile(f.getPath()); 
... 
ImageView image=new ImageView(context); 
image.setImageBitmap(bitmap); 
} 
+0

谢谢Axarydax的快速回复我会试试这个... – nilkash 2012-07-27 05:05:55

相关问题