来自sdcard目录的图像的Gridview

时间:2017-01-23 12:37:20

标签: android gridview android-sdcard

我希望从sdcard目录在gridview中显示图像。我使用此代码。但是当我按类型加载图像时:gridview适配器中的bitmap.getView需要Integer [] array.how我可以修复它吗?

public class LoadPic extends Activity {

Integer[] imageIDs = {
        R.drawable.user,
        R.drawable.user,
        R.drawable.user,
        R.drawable.user,
        R.drawable.user,
        R.drawable.user,
        R.drawable.user
};

int numberOfImages=0;
Bitmap[] m;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.load_pic);


    Intent gett = getIntent();


    String _area = gett.getStringExtra("area");
    String _domain = gett.getStringExtra("domain");
    String _block = gett.getStringExtra("block");
    String _melk = gett.getStringExtra("melk");
    String _build = gett.getStringExtra("build");
    String _apar = gett.getStringExtra("apar");
    String _senfi = gett.getStringExtra("senfi");




    File dir = new File(Environment.getExternalStorageDirectory()
            + "/momayezi/"+_area+"-"+_domain+"-"+_block+"-"+_melk+"-"+_build+"-"+_apar+"-"+_senfi);
    File[] files = dir.listFiles();
    numberOfImages=files.length;


    for (int i=1;i<=numberOfImages;i++)
    {

        File img = new File("/sdcard/momayezi/"+_area+"-"+_domain+"-"+_block+"-"+_melk+"-"+_build+"-"+_apar+"-"+_senfi+"/pic"+i+".png");


        if(img.exists())
        {
            Bitmap bit = BitmapFactory.decodeFile(img.getAbsolutePath());

        }

    }




    GridView gridView = (GridView) findViewById(R.id.gridview);
    gridView.setAdapter(new ImageAdapter(this));

    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent,
                                View v, int position, long id) {
            Toast.makeText(getBaseContext(),
                    "pic" + (position + 1) + " selected",
                    Toast.LENGTH_SHORT).show();
        }
    });



}



public class ImageAdapter extends BaseAdapter
{
    private Context context;

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

    //---returns the number of images---
    public int getCount() {
        return numberOfImages;
    }

    //---returns the ID of an item---
    public Object getItem(int position) {
        return position;
    }

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

    //---returns an ImageView view---
    public View getView(int position, View convertView, ViewGroup parent)
    {
        ImageView imageView;
        if (convertView == null) {
            imageView = new ImageView(context);
            imageView.setLayoutParams(new GridView.LayoutParams(185, 185));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(7, 7, 7, 7);
        } else {
            imageView = (ImageView) convertView;
        }


        /**/
        imageView.setImageResource(imageIDs[position]);
        /**/

        return imageView;
    }
}

}

请帮助我如何使用此类(适配器)中的图像。

3 个答案:

答案 0 :(得分:0)

替换

public int getCount() {
        return numberOfImages;
    }

public int getCount() {
        return imageIDs.length();
    }

答案 1 :(得分:0)

首先正确解释想要设置可绘制位图的内容?

如果Bitmap那么你应该如何设置位图(制作一个位图列表然后):

imageView.setImageBitmap(bitmaps[position]);

if Drawable then(make drawable of drawable id's)

imageview.setImageResource(drawables[position]);

这是如何制作位图列表:

ArrayList<Bitmap> bitmaps = new ArrayList<Bitmap>();


File dir = new File(Environment.getExternalStorageDirectory()
            + "/momayezi/"+_area+"-"+_domain+"-"+_block+"-"+_melk+"-"+_build+"-"+_apar+"-"+_senfi);
    File[] files = dir.listFiles();
    numberOfImages=files.length;


    for (int i=1;i<=numberOfImages;i++)
    {

File f = new File("/sdcard/momayezi/"+_area+"-"+_domain+"-"+_block+"-"+_melk+"-"+_build+"-"+_apar+"-"+_senfi+"/pic"+i+".png");
Bitmap bmp = BitmapFactory.decodeFile(f.getAbsolutePath());
if(bmp!=null){
bitmaps.add(bmp);
}
}

答案 2 :(得分:0)

如果要将sdcard中的图像显示到网格视图中,请使用任何图像加载器库

通用图片加载器

https://github.com/nostra13/Android-Universal-Image-Loader

然后您需要创建一个字符串数组或模型类而不是该整数数组。 请参考以下教程。

http://wptrafficanalyzer.in/blog/loading-thumbnail-images-in-a-gridview-and-opening-original-images-in-alertdialog-using-media-content-providers/