[英]How can i over come out of memory exception while loading bitmaps from url in android list view?
內存不足異常#在處理以下適配器類時,如何解決內存不足異常。 我可以通過使用惰性適配器來解決此問題嗎?
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;
}
}
您可以使用任何圖像加載器庫來加載圖像,而不是從位圖中設置圖像。 萬一圖像太大,可以使用
android:largeHeap =“ true”
給更多的記憶。
據我說,您可以通過調用recycle方法(即image1.recycle();)來消除此錯誤。 調用此方法后,此方法將釋放image1占用的內存。 您也可以訪問http://developer.android.com/training/displaying-bitmaps/index.html ,了解如何有效處理位圖。 希望能幫助到你!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.