我已经实现了一个分段列表视图,因此每个部分都有一个使用本指南的适配器,并且可能会导致视图在滚动时一遍又一遍地分配,而不是因为有不同的适配器而重用(但是当回滚时,它会重用但对于同一个适配器),它的 getView 方法是这样的(简化):
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 方法来自这个谷歌示例。
问题是当我滚动时它会占用越来越多的内存,例如 2 MB 用于 5-10 行。当我向后滚动时,它不会占用更多内存,但据我所知,它不应该分配如此多的内存,因为它会重用视图,因为我希望它在加载时以及滚动以使用时占用内存来自缓存的相同视图和位图(因为大部分可绘制对象是从缓存返回的相同对象)。
可能是什么问题?还有其他更智能的可重用分段列表视图选项吗?
非常感谢。