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

1つは、行を取り出して関数View hView = convertView;で使用するだけconvertViewです。そこに作成したリンクは役に立ちません。

それ以外は、ここでの割り当てについて心配する必要はありません。ListView は大量の最適化を行い、オブジェクトをかなり使用/解放している可能性があります。

于 2012-06-14T21:58:30.850 に答える