動的リストをカスタマイズする Android Jetpack の一部。

Compose の方法を試す
Jetpack Compose は、Android で推奨される UI ツールキットです。Compose でレイアウトを操作する方法を学習します。

カスタマイズ可能 RecyclerView オブジェクトを選択できます。標準クラスについては、このモジュールの 動的リストの作成: RecyclerView は、ほとんどのデベロッパーが必要とする機能をすべて備えています。イン 多くの場合、ビューホルダーごとにビューを設計し、 適切なデータでビューを更新するコードです。ただし、アプリに 標準の動作をさまざまな方法で変更できます。 このドキュメントでは、可能なカスタマイズについて説明します。

レイアウトを変更する

RecyclerView は、レイアウト マネージャーを使用して個々のアイテムを画面上に配置します。また、ユーザーに表示されなくなったアイテムビューを再利用するタイミングを判断します。ビューを再利用(リサイクル)するために、レイアウト マネージャーがアダプターに対し、ビューのコンテンツをデータセットの別の要素で置き換えるよう求めることがあります。この方法でビューをリサイクルすると、不要なビューが作成されず、負荷の高い findViewById() による検索も行われないため、パフォーマンスが向上します。Android サポート ライブラリには、3 つの標準レイアウト マネージャーが含まれています。 多数のカスタマイズ オプションが用意されています。

  • LinearLayoutManager: アイテムを 1 次元のリスト内に配置します。使用 LinearLayoutManager を持つ RecyclerView は、 機能 ListView できます。
  • GridLayoutManager: は、上の正方形の正方形のように、アイテムを 2 次元のグリッドで配置します。 チェッカーボードRecyclerViewGridLayoutManager とともに使用すると、GridView レイアウトのような機能が得られます。
  • StaggeredGridLayoutManager: は、各列がわずかにずれた状態で 2 次元のグリッドにアイテムを配置します。 アメリカの国旗に付いた星のように

これらのレイアウト マネージャーがニーズに合わない場合は、次の方法で独自のレイアウト マネージャーを作成できます。 Kubernetes を拡張して、 RecyclerView.LayoutManager 使用します。

アイテム アニメーションを追加する

アイテムが変更されるたびに、RecyclerViewアニメーターを使用します。 外観を変更します。このアニメーターは、Terraform ワークフローの RecyclerView.ItemAnimator クラスです。デフォルトでは、RecyclerView は以下を使用します。 DefaultItemAnimator アニメーションを追加します。カスタムのアニメーションを表示したい場合は、RecyclerView.ItemAnimator を拡張することによって独自のアニメーター オブジェクトを定義できます。

リストアイテムを選択できるようにする

recyclerview-selection ライブラリを使用すると、ユーザーはタップまたはマウス入力で RecyclerView リスト内のアイテムを選択できます。これにより、選択したアイテムの視覚的な表示に対するコントロールを維持できます。また、選択の動作を管理するポリシー(選択の対象になり得るアイテム、選択可能なアイテムの数など)に対するコントロールも維持できます。

RecyclerView インスタンスに選択サポートを追加するには、次の手順を行います。 手順は次のとおりです。

  1. 使用する選択キーのタイプを決定して、 ItemKeyProvider

    選択したアイテムを識別するために使用できるキータイプは 3 つあります。

    選択キーのタイプについて詳しくは、SelectionTracker.Builder をご覧ください。

  2. ItemDetailsLookup を実装します。
  3. ItemDetailsLookup を使用すると、選択ライブラリは MotionEvent が指定された RecyclerView アイテムに関する情報にアクセスできます。これは実質的には、 ItemDetails バックアップされているインスタンス、または Cloud Logging から RecyclerView.ViewHolder 作成します。

  4. RecyclerView のアイテム View オブジェクトを更新し、ユーザーが選択または選択解除したことを反映します。

    選択ライブラリには、選択されたアイテムに対するデフォルトの視覚的装飾は用意されていません。実装時に提供 onBindViewHolder()。 次のアプローチをおすすめします。

    • onBindViewHolder() で次を呼び出します。 setActivated() - 対象外 setSelected() - オン 次を含む View オブジェクト true または false(アイテムが を選択します。
    • ビューのスタイルを更新し、有効なステータスを表示します。水 推奨事項: 色状態 list リソースを使用してスタイルを設定します。
  5. ActionMode を使用する 選択項目に対してアクションを実行するためのツールをユーザーに提供します。
  6. まず SelectionTracker.SelectionObserver 選択内容が変更されたときに通知が届きます。選択範囲が最初に作成されたら ActionMode を開始してユーザーに提示し、 選択できるようになります。たとえば、ファイルの削除ボタンを ActionMode バーをクリックし、バーの戻る矢印を接続して消去します 選択します。選択内容が空になった場合 - ユーザーが 終了アクション モードになります。

  7. 解釈されたセカンダリ アクションを実行します。
  8. イベント処理パイプラインの最後に、ライブラリが、ユーザーがアイテムをタップして有効にしようとしている、あるいは、ユーザーが選択したアイテムをドラッグしようとしていると判断することがあります。こうした解釈に対応するには、適切なリスナーを登録します。詳細情報 詳しくは、 SelectionTracker.Builder

  9. すべてを SelectionTracker.Builder で組み立てます。
  10. 次の例は、これらの要素を組み立てる方法を示しています。

    KotlinJava
        var tracker = SelectionTracker.Builder(
            "my-selection-id",
            recyclerView,
            StableIdKeyProvider(recyclerView),
            MyDetailsLookup(recyclerView),
            StorageStrategy.createLongStorage())
                .withOnItemActivatedListener(myItemActivatedListener)
                .build()
        
        SelectionTracker tracker = new SelectionTracker.Builder<>(
                "my-selection-id",
                recyclerView,
                new StableIdKeyProvider(recyclerView),
                new MyDetailsLookup(recyclerView),
                StorageStrategy.createLongStorage())
                .withOnItemActivatedListener(myItemActivatedListener)
                .build();
        

    独自の SelectionTracker アプリは同じ RecyclerView.Adapter 初期化するために使用し、RecyclerViewSelectionTracker.Builder。そのため、SelectionTracker インスタンスを作成したら、RecyclerView.Adapter に挿入します。そうしないと、アイテムの onBindViewHolder() メソッドから選択されたステータス。

  11. 選択をアクティビティのライフサイクル イベントに追加します。
  12. アクティビティのライフサイクル イベント全体で選択状態を保持するには、 選択トラッカーの onSaveInstanceState() および onRestoreInstanceState() アクティビティのメソッドから onSaveInstanceState() および onRestoreInstanceState() あります。また、アプリは一意の選択 ID を SelectionTracker.Builder コンストラクタ。この ID は必須です。なぜなら、アクティビティやフラグメントに選択可能なリストが複数ある場合は、それらすべてを保存された状態に維持する必要があるためです。

参考情報

詳細については、次のリファレンスをご覧ください。