Home Ask Login Register

Developers Planet

Your answer is one click away!

user2645941 February 2016

OutofMemory Error when loading Images in Gridview

I'm implementing the following code in my adapter when i faced the problem of OutofMemory Error.But problem here is i am able to load only the first enter code here image that is 0th position in the gridview. Below is my code, Please suggest the changes.

public class GridAdapter extends BaseAdapter {

    String[] names;
    int[] images;
    Context context;
    private static LayoutInflater inflater=null;

    //private LruCache<String bitmap="",> memorucache;
    private LruCache<String, Bitmap> mMemoryCache;

    public  GridAdapter(Context mainActivity,String[] _names,int[] _images){

        inflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        final int maxMemory= (int) (Runtime.getRuntime().maxMemory() / 1024);
        final int cacheSize=maxMemory/8;

        mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
            protected int sizeOf(String key, Bitmap bitmap) {
                // The cache size will be measured in kilobytes rather than
                // number of items.
                return bitmap.getByteCount() / 1024;


    public int getCount() {
        return names.length;

    public Object getItem(int position) {
        return position;

    public long getItemId(int position) {
        return position;

    public View getView(int position, View convertView, ViewGroup parent) {

        Holder holder=new Holder();
        View rowView;

        holder.txtview= (TextView) rowView.findViewById(R.id.textView1);
        holder.imageview= (ImageView) rowView.findViewById(R.id.imageView1);



Shoeb Siddique February 2016

Please add this in Your Manifest application tag.




imageLoader.loadImage(imageUri, new SimpleImageLoadingListener()  
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) 
         // Do whatever you want with Bitmap 

Mustansar Saeed February 2016

Your images are too large to be loaded in to the memory. Do the following steps:

Hope this helps.

Soham Dutta February 2016

You could try using Universal Image Loader(https://github.com/nostra13/Android-Universal-Image-Loader ) or Picasso(http://square.github.io/picasso/) which I feel has a simpler way of implementation.

But if you dont wish to use libraries then you should add the line


to your manifest.

Devendra Singh February 2016

try this

public Bitmap resizedBitmap(Bitmap originalImage, int width, int height) {
    Bitmap background = Bitmap.createBitmap((int) width, (int) height, Bitmap.Config.ARGB_8888);
    float originalWidth = originalImage.getWidth(), originalHeight = originalImage.getHeight();
    Canvas canvas = new Canvas(background);
    float scale = width / originalWidth;
    float xTranslation = 0.0f, yTranslation = (height - originalHeight * scale) / 2.0f;
    Matrix transformation = new Matrix();
    transformation.postTranslate(xTranslation, yTranslation);
    transformation.preScale(scale, scale);
    Paint paint = new Paint();
    canvas.drawBitmap(originalImage, transformation, paint);
    return background;

Added a color filter.

Post Status

Asked in February 2016
Viewed 3,684 times
Voted 11
Answered 4 times


Leave an answer

Quote of the day: live life