我已经实现了一个分区列表视图,以便每个部分都有一个使用this guide的适配器,并且可能会导致滚动时不断重复分配视图,并且由于存在不同的适配器而无法重用(但是当向后滚动时,它重用但对于相同的适配器)和它的getView方法就是这样(简化):Android ListView内存泄漏?
Map< String, ? > object = null;
String id = null, title = null, rating = null, pic_url = null;
object = sectionContent.get(position).getMap();
id = (String) object.get(EventRowValues.ROW_ID);
title = (String) object.get(EventRowValues.ROW_TITLE);
pic_url = (String) object.get(EventRowValues.ROW_PIC_URL);
View hView = convertView;
if (hView == null) {
hView = mInflater.inflate(R.layout.popularity_row, null);
ViewHolder holder = new ViewHolder();
holder.pic = (ImageView) hView.findViewById(R.id.icon);
holder.title = (TextView) hView.findViewById(R.id.label);
hView.setTag(holder);
}
final ViewHolder holder = (ViewHolder) hView.getTag();
holder.id = id;
mImageWorker.loadImage(pic_url, holder.pic);
holder.title.setText(title);
return hView;
的方法的LoadImage是从this google example。
问题是,当我滚动它需要更多的内存,例如2到5行的5 MB。当我回滚时,它不会占用更多的内存,但据我所知,它不应该分配这么多的内存,因为它重用了视图,因为我期望它在内存加载时以及当我滚动时使用内存来自缓存的相同视图和位图(因为大部分可绘制对象都是从缓存中返回的相同对象)。
可能是什么问题? 任何其他选项更聪明的可重用的分段列表视图?
非常感谢。
那么你的问题是通过我的解决方案解决的吗? – Shrikant