ArrayAdapter の getViewTypeCount および getItemViewType メソッド 質問する

ArrayAdapter の getViewTypeCount および getItemViewType メソッド 質問する

誰か、 の使い方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;
}

これにより、すべての行に同じビュー タイプが提供されます。

編集- 全体的な流れを概説します。

  1. AdapterViewアダプターを使用してデータをバインドします。
  2. AdapterViewユーザーに表示される項目を表示しようとします。
  3. フレームワークは、表示しようとしている行でgetItemViewTypeある row を呼び出します。n
  4. フレームワークは、リサイクルされたビュー プールで rownのタイプのビューをチェックします。まだビューがリサイクルされていないため、何も見つかりません。
  5. getView行 に対して が呼び出されますn
  6. 使用するビューのタイプを決定するには、getItemViewType行を呼び出します。n
  7. 必要なビュー タイプに応じて異なる XML ファイルを拡張するには、if/switch ステートメントを使用します。
  8. ビューに情報を入力します。
  9. ビューを返して終了するとgetView、行のビューがユーザーに表示されます。

画面からスクロールしてビューがリサイクルされると、そのビューはフレームワークによって管理されるリサイクル ビュー プールに入ります。これらは基本的にビュー タイプ別に整理されるため、メソッドconvertViewのパラメーターで正しいタイプのビューが提供されますgetView

  1. フレームワークは、getItemViewType表示する行を再度呼び出します。
  2. 今回は、該当タイプのリサイクルプールでの景色です。
  3. convertViewリサイクルされたビューは、メソッドへのパラメーターとして渡されますgetView
  4. リサイクルされたビューに新しい情報を入力して返します。

おすすめ記事