2

私のアプリは、データベースに裏打ちされたいくつかのListViewを表示します。それぞれがカーソルアダプタとプロバイダーを使用して、データベースとUIの間のインターフェイスを取ります。あるケースでは、SimpleCursorAdapterをそのまま使用します(カスタムViewBinderを使用)。他のケースでは、SimpleCursorAdapterをサブクラス化しました。

アプリをトレースすると、これらのListViewが読み込まれるたびに、カーソルアダプターがリスト内の各アイテムに対してgetView()メソッドとbindView()メソッドを2回呼び出していることがわかります。なぜそれが起こっているのですか、そしてそれを回避する方法はありますか?

4

1 に答える 1

1

ListView の幅 (または高さ) を wrap_content に設定すると、この問題が発生します。Fill_Parent または match_parent に切り替えました。ListView の幅 (または高さ) を wrap_content に設定すると、最初の 3 つの項目が測定され、それらに基づいて寸法が決定されます。これらの最初の 3 つの項目を測定するには、bindView() を呼び出してデータを入力する必要があります。測定が完了すると、完全に入力され、最初の 3 つ以降で再度 bindView() が呼び出されます。

同じ問題を参照してくださいWrap_Content が BindView を複数回起動するのはなぜですか

于 2013-03-05T16:07:17.627 に答える