1
我實現了一個ExapndableListView(和問題是關於ListView的非常通用的)。Android的ListView的性能 - 怪異分配
我已經添加該簡化的代碼示例(沒有怎麼把問題的其它視圖是相同的,而不它們)。
的問題是,當我滾動,還有一些分配,我無法理解。 對於我滾動時呈現的前10-20個新細胞(大約),分配3-4 MB + - 對於其餘細胞,大約每20個細胞需要1 MB。
據我所知加載列表後,它應該不分配任何東西,只是重複使用相應的單元格。
public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
View convertView, ViewGroup parent) {
EventListItem object = (EventListItem) sections.get(groupPosition)
.getItemAtIndex(childPosition);
ViewHolder holder;
if (hView == null) {
hView = mInflater.inflate(R.layout.popularity_row, null);
holder = new ViewHolder();
holder.title = (TextView) hView.findViewById(R.id.label);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) hView.getTag();
}
holder.id = object.getId();
holder.title.setText(object.getTitle());
return convertView;
}
static class ViewHolder {
String id;
}
可能是什麼問題? 當我滾動時它可以分配什麼?
非常感謝。
謝謝,但什麼優化可以採取這樣的內存量?列表需要6-8 MB是否合理? –
取決於您用於列表的模型。 'EventListItem object =(EventListItem)sections.get(groupPosition).getItemAtIndex(childPosition);''可能導致你的記憶力上升。您發佈的代碼正確地實現了該功能,但也許問題在其他地方? –
它只是從一些數據結構中獲取對象......沒有分配任何東西.. –