誰か、 の使い方getViewTypeCount()
とgetItemViewType()
方法を分かりやすい言葉で説明してくれませんかArrayAdapter
?
ベストアンサー1
これらは、異なる種類異なる行の表示方法。たとえば、連絡先アプリケーションでは、偶数行には左側に写真を表示し、奇数行には右側に写真を表示したい場合があります。その場合は、次のようにします。
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
return position % 2;
}
フレームワークはビュータイプを使用して決定しますconvertView
あなたのgetView
方法であなたに渡すビューつまり、上記の例では、偶数行には再利用する左側の写真を含むリサイクル ビューのみが表示され、奇数行には右側の写真を含むリサイクル ビューのみが表示されます。
リスト内の各行のレイアウトが同じであれば、ビューの種類を気にする必要はありません。実際、ベースアダプタ.javaすべてのアダプタにデフォルトの動作を提供します。
public int getItemViewType(int position) {
return 0;
}
public int getViewTypeCount() {
return 1;
}
これにより、すべての行に同じビュー タイプが提供されます。
編集- 全体的な流れを概説します。
AdapterView
アダプターを使用してデータをバインドします。AdapterView
ユーザーに表示される項目を表示しようとします。- フレームワークは、表示しようとしている行で
getItemViewType
ある row を呼び出します。n
- フレームワークは、リサイクルされたビュー プールで row
n
のタイプのビューをチェックします。まだビューがリサイクルされていないため、何も見つかりません。 getView
行 に対して が呼び出されますn
。- 使用するビューのタイプを決定するには、
getItemViewType
行を呼び出します。n
- 必要なビュー タイプに応じて異なる XML ファイルを拡張するには、if/switch ステートメントを使用します。
- ビューに情報を入力します。
- ビューを返して終了すると
getView
、行のビューがユーザーに表示されます。
画面からスクロールしてビューがリサイクルされると、そのビューはフレームワークによって管理されるリサイクル ビュー プールに入ります。これらは基本的にビュー タイプ別に整理されるため、メソッドconvertView
のパラメーターで正しいタイプのビューが提供されますgetView
。
- フレームワークは、
getItemViewType
表示する行を再度呼び出します。 - 今回は、該当タイプのリサイクルプールでの景色です。
convertView
リサイクルされたビューは、メソッドへのパラメーターとして渡されますgetView
。- リサイクルされたビューに新しい情報を入力して返します。