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

Compose を試す
Jetpack Compose は、Android に推奨される UI ツールキットです。Compose でレイアウトを操作する方法を学習します。
<ph type="x-smartling-placeholder"></ph> Lazy リストと遅延グリッド →

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

レイアウトを変更する

RecyclerView は、レイアウト マネージャーを使用して個々の 使用して、使用しなくなったアイテムビューを再利用するタイミングを ユーザーに表示されます。ビューを再利用(リサイクル)するには、 マネージャーは、ビューの内容を 異なる要素があります。このようにビューをリサイクルすると、 不要なビューの作成を回避したり、パフォーマンスの 高い findViewById() ルックアップできます。Android サポート ライブラリには、3 つの標準レイアウト マネージャーが含まれています。 多数のカスタマイズ オプションが用意されています。

  • LinearLayoutManager: は、アイテムを 1 次元のリストに配置します。使用 LinearLayoutManager を持つ RecyclerView は、 機能 ListView できます。
  • GridLayoutManager: は、上の正方形の正方形のように、アイテムを 2 次元のグリッドで配置します。 チェッカーボード以下で RecyclerView を使用する GridLayoutManager は、 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 を使用すると、選択ライブラリにアクセスできるようになります。 指定された RecyclerView 個のアイテムに関する情報が MotionEvent。 これは実質的には、 ItemDetails バックアップされているインスタンス、または Cloud Logging から RecyclerView.ViewHolder 作成します。

  4. アイテムを更新 View 個のオブジェクト ユーザーが選択または選択するかどうかを反映する RecyclerView それらの選択を解除します。

    選択ライブラリには、 選択します。実装時に提供 onBindViewHolder()。 次の方法をおすすめします。

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

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

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

    Kotlin

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

    Java

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

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

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

参考情報

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