0

Out of memory exception# how can I fix the out of memory exception while handling following adapter class. Can I solve this by using lazy adapter?

public class myAdapter extends ArrayAdapter<Image>{


    public myAdapter(){
        super(MainActivity.this, R.layout.image,Imagelist);

    }
    @SuppressLint("InflateParams")
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View v=convertView;ViewHolder h;
        if(v==null){

            v=getLayoutInflater().inflate(R.layout.image, null);
            ImageView img=(ImageView) v.findViewById(R.id.imageView1);
            img.getLayoutParams().height=500;
            img.getLayoutParams().width=500;

            TextView Title=(TextView)v. findViewById(R.id.textView2);
            TextView desc=(TextView) v.findViewById(R.id.textView1);
            h=new ViewHolder(img,Title,desc);
            v.setTag(h);
        }
         else {
                h =  (ViewHolder) v.getTag();
            }
        final Image image1=Imagelist.get(position);
        //ImageView imageview=(ImageView)v.findViewById(R.id.imageView1);
        h.img.setImageBitmap(image1.getB());



        //=(TextView) v.findViewById(R.id.textView1);
    h.title.setText(" "+image1.getT());
    h.desc.setText(image1.getDesc());
    //Imagelist.clear();

        h.img.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent i=new Intent(Intent.ACTION_VIEW,Uri.parse(image1.getVideourl()));
                startActivity(i);
            }
        });

        return v;


    }


}
  class ViewHolder {
    public ImageView img;
    public TextView title;
    public ViewHolder(ImageView img, TextView title, TextView desc) {
        super();
        this.img = img;
        this.title = title;
        this.desc = desc;
    }

}
Soner Gönül
  • 97,193
  • 102
  • 206
  • 364
vinod kumar
  • 59
  • 1
  • 12

2 Answers2

0

You can use any image loader lib to load image instead of set image from bitmap. In case, if image size is so large, you can use

android:largeHeap="true"

to give more memory.

Samir Bhatt
  • 3,041
  • 2
  • 25
  • 39
0

According to me, you can remove this error by calling the recycle method i.e. image1.recycle(); this method will free the memory taken by the image1 as soon as you call this method. Also you can access http://developer.android.com/training/displaying-bitmaps/index.html to learn how to handle bitmaps efficiently. Hope it helps!!

Vipul Thakur
  • 54
  • 1
  • 9