1

我已经实现了一个 ExapndableListView(关于 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;
}

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

非常感谢。

4

1 回答 1

2

一方面,取出线路View hView = convertView;convertView在功能中使用。您在那里创建的链接是无用的。

除此之外,您不应该担心这里的分配。ListView 为您进行了大量优化,并且可能会大量使用/释放对象。

于 2012-06-14T21:58:30.850 回答