プロジェクトにカスタムCursorAdaptor
があり、オーバーライドされたメソッドbindView(View view, Context context, Cursor cursor)
とnewView(View view, Context context, Cursor cursor)
があります。 CursorAdapter
の用途と、bindView()
とnewView()
のオーバーライドの違いと用途について知りたい。
Developer Site および this のチュートリアルを読みましたが、それでも理解できませんでした。私はAndroidの初心者なので、この概念の理解を助けてください。
これを理解するには、まず BaseAdapter
がCursorAdapter
のサブクラスであるため、 BaseAdapter
がどのように機能するかを理解する必要があります。 。
AndroidはListView
のビューのプールを維持します。これにより、毎回新しいビューを作成する代わりに再利用できます。
BaseAdapter
には getView()
という関数があり、パラメータの1つはView
という名前のconvertView
オブジェクトです_。基本的に、このconvertView
は、リストが初めてロードされる場合はnull
になり、リストのスライドを開始するとnull
にはなりません。したがって、BaseAdapter
のgetView()
メソッドで、convertView
がnull
かどうかを確認します。もしそうなら、あなたはそれを膨らませるでしょう。次に、ビューを使用して、その要素を通常どおりに設定できます。これにより、リストビューのスクロールパフォーマンスが大幅に向上します。
CursorAdapter
を使用すると、リストビューのデータソースがデータベースの場合に簡単に使用できます。ただし、カーソルアダプターでは、AndroidがconvertView
がnull
であるかどうかをチェックします。 newView()
メソッドは、ビューを膨らませて返すだけです bindView()
メソッドでは、ビューの要素を設定します。
例として、最大11個のリスト項目を画面に表示できるデバイスのリストビューを想像してください。この場合、newView()
は最大11回呼び出されます。ただし、bindView()
は、リストビューをスクロールするたびに何度も呼び出されます。 newViewメソッドで作成した11個のビューは、リストをスクロールすると何度も再利用されます。