Android 如何显示存储在SD卡中的所有图像?

Android 如何显示存储在SD卡中的所有图像?,android,android-sdcard,Android,Android Sdcard,我想根据存储的文件夹显示存储在SD卡中的所有图像。如果一个文件夹中有两个图像,那么它应该只显示两个图像。假设SD卡包含一个名为movie的文件夹,并且它还有一些图像,那么当我单击movie folder时,它应该显示所有五个图像。我使用左侧的列表视图来显示存储图像的所有SD卡文件夹 我的代码是: public class ImageAdapter extends BaseAdapter { private Context mContext; private String Path

我想根据存储的文件夹显示存储在SD卡中的所有图像。如果一个文件夹中有两个图像,那么它应该只显示两个图像。假设SD卡包含一个名为movie的文件夹,并且它还有一些图像,那么当我单击movie folder时,它应该显示所有五个图像。我使用左侧的列表视图来显示存储图像的所有SD卡文件夹

我的代码是:

public class ImageAdapter extends BaseAdapter {
    private Context mContext;
    private String Path;
    String [] imagesFile;
    File dirName;
    Bitmap bm[];
    int count;

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

    public ImageAdapter(Context c, String nAndroids) {
        mContext = c;
        Path=nAndroids;
        dirName=new File(Path+"/");
        if(dirName.isDirectory()){
            imagesFile=dirName.list();
            count=imagesFile.length ;

        }
    }

    public int getCount() {
        if(imagesFile!=null){
            return count;
        }
         return 0;

    }

    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=null;
        System.gc();
        if( imagesFile!=null  && imagesFile.length>0)
        {
            for(String bitmapFileName : imagesFile)
            {
                if (convertView == null) {  // if it's not recycled, initialize some attributes
                    imageView = new ImageView(mContext);
                    imageView.setLayoutParams(new GridView.LayoutParams(100, 100));
                    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                    imageView.setPadding(8, 8, 8, 8);

                    BitmapFactory.Options options = new BitmapFactory.Options();  
                    options.inSampleSize = 2;
                    Bitmap bmp = BitmapFactory.decodeFile(dirName.getPath() + "/" + bitmapFileName,options);
                    Log.e("Images is Decoded in ImageAdapter Class","<<-->>"+bmp);
                    imageView.setImageBitmap(bmp);
                } else {
                    imageView = (ImageView) convertView;
                }
        }


        }

        else 
        {
            if (convertView == null) {  // if it's not recycled, initialize some attributes
                imageView = new ImageView(mContext);
                imageView.setLayoutParams(new GridView.LayoutParams(100, 100));
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                imageView.setPadding(8, 8, 8, 8);

            } else {
                imageView = (ImageView) convertView;
            }
        }
   return imageView;
    }
公共类ImageAdapter扩展了BaseAdapter{
私有上下文;
私有字符串路径;
字符串[]图像文件;
文件名;
位图bm[];
整数计数;
公共图像适配器(上下文c){
mContext=c;
}
公共图像适配器(上下文c、字符串NANDROID){
mContext=c;
路径=NANDROID;
dirName=新文件(路径+“/”);
if(dirName.isDirectory()){
imagesFile=dirName.list();
计数=图像文件长度;
}
}
public int getCount(){
if(imagesFile!=null){
返回计数;
}
返回0;
}
公共对象getItem(int位置){
返回null;
}
公共长getItemId(int位置){
返回0;
}
//为适配器引用的每个项目创建新的ImageView
公共视图getView(int位置、视图转换视图、视图组父视图){
ImageView ImageView=null;
gc();
if(imagesFile!=null&&imagesFile.length>0)
{
用于(字符串位图文件名:imagesFile)
{
如果(convertView==null){//如果它没有被回收,初始化一些属性
imageView=新的imageView(mContext);
setLayoutParams(新的GridView.LayoutParams(100100));
imageView.setScaleType(imageView.ScaleType.CENTER\U裁剪);
设置填充(8,8,8,8);
BitmapFactory.Options=new-BitmapFactory.Options();
options.inSampleSize=2;
位图bmp=BitmapFactory.decodeFile(dirName.getPath()+“/”+bitmapFileName,选项);
Log.e(“图像在ImageAdapter类中解码,”“+bmp”);
设置图像位图(bmp);
}否则{
imageView=(imageView)convertView;
}
}
}
其他的
{
如果(convertView==null){//如果它没有被回收,初始化一些属性
imageView=新的imageView(mContext);
setLayoutParams(新的GridView.LayoutParams(100100));
imageView.setScaleType(imageView.ScaleType.CENTER\U裁剪);
设置填充(8,8,8,8);
}否则{
imageView=(imageView)convertView;
}
}
返回图像视图;
}