セクションリストビューを実装したので、このガイドを使用してすべてのセクションにアダプターがあり、アダプターが異なるため、スクロール時にビューが何度も割り当てられ、再利用されないようになっています(ただし、スクロールして戻ると、再利用されます)ただし、同じアダプタの場合)、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メソッドは、このgoogleの例からのものです。
問題は、スクロールすると、より多くのメモリが必要になることです。たとえば、5〜10行の場合は2MBです。スクロールして戻ると、それ以上のメモリは必要ありませんが、ロード時とスクロールして使用するときにメモリを消費すると予想されるため、ビューを再利用するため、このような量のメモリを割り当てる必要はありません。キャッシュからの同じビューとビットマップ(ドローアブルの多くはキャッシュから返された同じオブジェクトであるため)。
何が問題なのか?よりスマートに再利用可能なセクション化されたlistViewへの他のオプションはありますか?
どうもありがとう。