2

ListViewを使用してカスタムデータを表示しています。アダプターでデータが更新されたら、notifyDatasetChanged()を呼び出します。これにより、ビューが更新されます。これはすべて正常に機能しますが、私の問題は、アニメーションを1回だけ実行したいということです。アダプターの更新時に変更された項目。現在、変更されたすべてのオブジェクトのコピーを保持しており、getView()呼び出しを介して正しいアイテムをアニメーション化しようとしました。

ただし、getView呼び出しごとに1回だけ実行すると、変更されたアイテムのアニメーションはほとんど表示されません。連続するgetView呼び出しでこれを続けると、同じように変更されないアイテムのアニメーションが表示され、変更されたアイテムも何度もアニメーション化されます。

生成されたビューをすぐに表示する以外の理由で、AndroidがgetView()を呼び出すことがあると推測しています。これが、一度実行すると機能しない理由です。

これを行う正しい方法は何ですか?

ありがとう、トーテム。

4

1 に答える 1

0

誰かがこの問題を抱えている場合、それを回避する方法は、リストビューを拡張してオーバーライドすることです

onMeasure(int widthMeasureSpec, int heightMeasureSpec) 

内側で手動でサイズを設定します

setMeasuredDimension()

スーパーonMeasure()を呼び出さないように注意してください。これは、子を測定するためだけに、すべての子ビューに対して使い捨てビューでgetviewを呼び出すためです。

于 2010-10-26T13:17:29.670 に答える