getView()
の方法を教えてくださいArrayAdapter
。
ドキュメントを読みましたが、3つのパラメータがあります。
position
:ビューが必要なアイテムのアダプターのデータセット内のアイテムの位置。convertView
:可能であれば、再利用する古いビュー。注:使用する前に、このビューがnullでなく、適切なタイプであることを確認する必要があります。このビューを変換して正しいデータを表示できない場合、このメソッドは新しいビューを作成できます。
異種リストはビュータイプの数を指定できるため、このビューは常に正しいタイプになります(getViewTypeCount()およびgetItemViewType(int)を参照)。parent
:このビューが最終的にアタッチされる親
position
パラメータを理解しました。彼らが言ったように、それはビューが要求されたアイテムの位置を意味します。
どこconvertView
から来たのですか。convertView
nullかどうかをチェックする例をたくさん見てきました。isがnullの場合、行レイアウトの新しいインスタンスを膨らませ、データを入力して返します。私もその周りに頭を悩ませていると思いますが、それでも1つのことが私を困惑させます。convertView
パラメータを介して渡されるレイアウトは何ですか。初期化時に渡されるresource
パラメータArrayAdapter
は?によって返された最後のレイアウトのキャッシュされたコピーはありgetView()
ますか?
そして最後に。パラメータは何をしparent
ますか。これを利用した例はあまり見たことがありません。それらのほとんどは、単に行レイアウトを再利用/膨張させて返します。
(クリックアニメーションが含まれているので質問していますListView
。具体的には、 Spotifyのドロップダウンクイックアクションメニューを複製することを目的としています。アニメーションが少し遅くなっています。この問題をしばらく診断した後、私は気づきました。これはgetView()
、すべての反復で新しい行レイアウトをインフレートしているため、メソッドの完了に少し時間がかかるためです。ViewHolder
しばらくの間、行レイアウトをキャッシュすることを提案した人がいます。他の例では、convertView
パラメータを再利用することを示しています。 convertView
nullの場合の行レイアウト。)