web-dev-qa-db-ja.com

CursorAdapterでbindView()およびnewView()が行うこと

プロジェクトにカスタムCursorAdaptorがあり、オーバーライドされたメソッドbindView(View view, Context context, Cursor cursor)newView(View view, Context context, Cursor cursor)があります。 CursorAdapterの用途と、bindView()newView()のオーバーライドの違いと用途について知りたい。

Developer Site および this のチュートリアルを読みましたが、それでも理解できませんでした。私はAndroidの初心者なので、この概念の理解を助けてください。

25
Jainendra

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

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

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

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

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

126
Vinay S Shenoy