Избыточное и обновление строк listView при изменении размера - PullRequest
0 голосов
/ 11 июля 2011

Я использую ListView в своей деятельности с настраиваемым адаптером массива (он просто переопределяет метод getView) для некоторых действий в чате.Когда я открываю изменение размера списка софт-клавиатуры (например, от 5 до 2 видимых строк), но метод getView вызывается 7 раз:

07-11 11:59:13.185: DEBUG/*: [ChatMessageArrayAdapter] generating view for pos:5
07-11 11:59:13.346: DEBUG/*: [ChatMessageArrayAdapter] generating view for pos:4
07-11 11:59:13.485: DEBUG/*: [ChatMessageArrayAdapter] generating view for pos:3
07-11 11:59:13.625: DEBUG/*: [ChatMessageArrayAdapter] generating view for pos:2
07-11 11:59:13.775: DEBUG/*: [ChatMessageArrayAdapter] generating view for pos:1
07-11 11:59:14.015: DEBUG/*: [ChatMessageArrayAdapter] generating view for pos:5
07-11 11:59:14.135: DEBUG/*: [ChatMessageArrayAdapter] generating view for pos:4

Как я могу предотвратить эти издержки?1005 *

1 Ответ

0 голосов
/ 11 июля 2011

AFAIK Это нормальное Поведение из getView(); Вы не можете предотвратить вызов на getView(), но можете минимизировать издержки процесса.Вы бы использовали что-то вроде:

public View getView(final int position, View convertView, ViewGroup parent) {
    View row = null;
    if(convertView == null)
    {
        row = LayoutInflater.from(mContext).inflate(R.layout.row, null);
        //initialize and set values of components inside row for the first time.
    }
    else
    {
        row = convertView;
    }
    return row;
}
...