25

CursorAdaptor私のプロジェクトには、オーバーライドされたメソッドbindView(View view, Context context, Cursor cursor)とを使用したカスタムがありnewView(View view, Context context, Cursor cursor)ます。何のために使われているのか、そしてオーバーライドとCursorAdapterの使い方の違いは何なのか知りたいです。 bindView()newView()

開発者サイトこのチュートリアルを読みましたが、それでも理解できませんでした。私はAndroidの初心者なので、この概念を理解するのを手伝ってください。

4

1 に答える 1

126

これを理解するには、がのサブクラスであるため、最初にどのようBaseAdapterに機能するかを理解する必要があります。CursorAdapterBaseAdapter

Androidは、ビューのプールを維持しているため、ListView毎回新しいビューを作成する代わりに、それを再利用できます。

には、という名前のBaseAdapter関数getView()があり、パラメータの1つは。Viewという名前のオブジェクトconvertViewです。基本的に、これはリストが初めてロードさconvertViewれる場合であり、リストのスライドを開始すると、ロードされません。したがって、のメソッドで、であるかどうかを確認します。はいの場合、あなたはそれを膨らませます。次に、ビューを使用して、その要素を通常どおりに設定できます。これにより、リストビューのスクロールパフォーマンスが大幅に向上します。nullnullgetView()BaseAdapterconvertViewnull

CursorAdapterリストビューのデータソースがデータベースの場合、Aを使用すると簡単に使用できます。ただし、カーソルアダプターでは、AndroidがそうであるかどうかをチェックしconvertViewますnull。このnewView()メソッドでは、ビューを膨らませて返すだけです。このbindView()メソッドでは、ビューの要素を設定します。

例として、画面に最大11個のリストアイテムを表示できるデバイスのリストビューを想像してみてください。この場合、newView()最大11回呼び出されます。ただし、bindView()リストビューをスクロールするたびに何度も呼び出されます。newViewメソッドで作成した11個のビューは、リストをスクロールするときに何度も再利用されます。

于 2012-10-01T12:10:27.013 に答える