自訂動態清單 Android Jetpack 的一部分。

試用 Compose
Jetpack Compose 是 Android 推薦的 UI 工具包。瞭解如何在 Compose 中使用版面配置。

您可以自訂 RecyclerView 來滿足特定需求先前提過的標準類別 使用以下元素建立動態清單: RecyclerView 可提供大多數開發人員需要的所有功能。於 在許多情況下,您只需要設計每個檢視畫面保留項的檢視畫面,並編寫 程式碼,以更新相關檢視資料。不過,如果您的應用程式 特定需求,您可以透過幾種方式修改標準行為。 本文件將說明部分可能的自訂項目。

修改版面配置

RecyclerView 會使用版面配置管理工具定位個別項目位置 項目,並決定何時重複使用不再的項目檢視畫面 使用者看得見重複使用 (或「回收」) - 檢視區塊、版面配置 管理員可能會要求轉接介面,以 與資料集的不同元素以這種方式回收檢視畫面來改善 盡可能避免建立不必要的觀點或表演 高價位 findViewById() 以及查詢內容Android 支援資料庫包含三個標準版面配置管理工具 其中提供許多自訂選項:

  • LinearLayoutManager: 會在一維清單中排列項目。使用 透過 LinearLayoutManager 提供的 RecyclerView 提供 例如 ListView 版面配置。
  • GridLayoutManager: 會以 2D 格線形式排列項目,例如 棋盤。與 RecyclerView 搭配使用 GridLayoutManager 提供許多功能,例如 GridView 版面配置。
  • StaggeredGridLayoutManager: 以 2D 格線排列項目,每個欄略有偏移 像是美國國旗上的星星

如果這些版面配置管理工具不符合您的需求,您可以 擴充 RecyclerView.LayoutManager 抽象類別。

新增項目動畫

每當項目變更時,RecyclerView 都會使用動畫工具 變更外觀此動畫工具是擴充抽象層的物件 RecyclerView.ItemAnimator 類別根據預設,RecyclerView 會使用 DefaultItemAnimator 就能提供動畫如果你想提供自訂動畫,可以 自行定義動畫物件 RecyclerView.ItemAnimator

啟用清單項目選取內容

recyclerview-selection敬上 程式庫可讓使用者以觸控方式選取 RecyclerView 清單中的項目 使用滑鼠或滑鼠輸入這樣一來,您就能掌控 已選取的項目。您也可以保留控制的選擇政策 例如哪些商品可供選取,以及哪些商品可以接受 。

如要為 RecyclerView 執行個體新增選取功能,請遵循 步驟如下:

  1. 決定要使用的選取索引鍵類型,然後建立 ItemKeyProvider

    有三種鍵類型可用來識別所選項目:

    如要進一步瞭解選取鍵類型,請參閱 SelectionTracker.Builder

  2. 導入設定 ItemDetailsLookup
  3. ItemDetailsLookup 可讓選取項目庫存取 提供RecyclerView項目的相關資訊 MotionEvent。 這實際上是 ItemDetails敬上 備份或擷取來源執行個體 RecyclerView.ViewHolder 執行個體。

  4. 更新項目 有 View 個物件位於 RecyclerView 以反映使用者選取或 。

    選取程式庫不會為 已選取的項目。請在實作時提供這項資訊 onBindViewHolder()。 建議您採取下列做法:

    • onBindViewHolder() 中,撥打 setActivated() - 不是 setSelected()—開啟 View 物件,其中包含 truefalse,取決於該項目為 已選取
    • 更新檢視區塊的樣式來代表已啟用狀態。三 建議您使用 色彩狀態 列出資源來設定樣式。
  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. 包括 活動 生命週期事件。
  12. 為了在活動生命週期事件期間保留選取狀態,您的應用程式 必須呼叫選取追蹤程式的 onSaveInstanceState()onRestoreInstanceState() 方法來自活動的 onSaveInstanceState()onRestoreInstanceState() 方法。此外,您的應用程式也必須針對 SelectionTracker.Builder 建構函式。必須提供這個 ID,因為 一個活動或片段可能會有多個不同的可選取清單 而且這些請求必須保存在儲存狀態中

其他資源

詳情請參閱下列參考資料。