gpt4 book ai didi

Android ListView 性能 - 奇怪的分配

转载 作者:行者123 更新时间:2023-11-29 22:04:36 25 4
gpt4 key购买 nike

我已经实现了一个 ExapndableListView(这个问题对 ListView 来说很笼统)。

我已经添加了这个简化的代码示例(没有其他 View ,因为没有它们问题是一样的)。

问题是当我滚动时,有些分配我无法理解。 对于我滚动时显示的前 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;
}

可能是什么问题?当我滚动时它会分配什么?

非常感谢。

最佳答案

首先,去掉 View hView = convertView; 行,然后在函数中使用 convertView。您在那里创建的链接没有用。

除此之外,您不必担心此处的分配。 ListView 为您做了很多优化,并且可能会大量使用/释放对象。

关于Android ListView 性能 - 奇怪的分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11041116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com