2

我使用 ListView 来显示一些自定义数据,一旦在适配器中更新数据,我调用 notifyDatasetChanged(),因此视图将得到更新,所有这些都运行良好,但我的问题是我只想运行一次动画更新适配器时更改的项目。目前我保留所有更改对象的副本,并尝试通过 getView() 调用为正确的项目设置动画。

但是,如果我为每个 getView 调用只执行一次,那么大多数时间我在更改的项目上看不到动画。如果我在连续的 getView 调用中继续这样做,我会看到没有更改的项目上的动画,以及更改的项目一次又一次地动画。

我猜有时android会出于其他原因调用getView(),而不是立即显示生成的视图,这就是我执行一次它不起作用的原因。

这样做的正确方法是什么?

谢谢,图腾。

4

1 回答 1

0

如果有人也有这个问题,解决方法是扩展列表视图并覆盖

onMeasure(int widthMeasureSpec, int heightMeasureSpec) 

并在里面手动设置大小

setMeasuredDimension()

确保不要调用 super onMeasure(),因为它会在所有子视图上调用 getview,并使用一次性视图来测量它们。

于 2010-10-26T13:17:29.670 回答