Android ListView анимация просмотров внутри адаптера, который был обновлен - PullRequest
2 голосов
/ 29 августа 2010

Я использую ListView для отображения некоторых пользовательских данных, после обновления данных в адаптере я вызываю notifyDatasetChanged (), поэтому представление обновляется, все это работает хорошо, но моя проблема в том, что я хотел бы запустить анимацию только один раз для элементов, которые были изменены при обновлении адаптера. в настоящее время я сохраняю копию всех измененных объектов и пытаюсь анимировать нужные элементы с помощью вызова getView ().

Однако, если я делаю это только один раз для каждого вызова getView, то большую часть времени я не вижу анимации для элементов, которые изменились. если я продолжаю делать это при последующих вызовах getView, я вижу анимацию для элементов, которые не меняются, а также для тех, которые изменились, анимируются снова и снова.

Я предполагаю, что иногда Android вызывает getView () по другим причинам, чем немедленное отображение сгенерированного представления, и по этой причине он не работает, если я делаю это один раз.

Как правильно это сделать?

Спасибо, Тотем.

1 Ответ

0 голосов
/ 26 октября 2010

Если у кого-то есть и эта проблема, то можно обойти это путем расширения списка и переопределения

onMeasure(int widthMeasureSpec, int heightMeasureSpec) 

, а внутри вручную установить размер с помощью

setMeasuredDimension()

, убедитесь, что невызовите super onMeasure (), так как он вызовет getview для всех ваших дочерних представлений с одноразовым представлением только для их измерения.

...