自訂動態清單 Android Jetpack 的一部分。
您可以自訂
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
執行個體新增選取功能,請遵循
步驟如下:
- 決定要使用的選取索引鍵類型,然後建立
ItemKeyProvider
。有三種鍵類型可用來識別所選項目:
Parcelable
及其子類別Uri
String
Long
如要進一步瞭解選取鍵類型,請參閱
SelectionTracker.Builder
。 - 導入設定
ItemDetailsLookup
。 - 更新項目
有
View
個物件位於RecyclerView
以反映使用者選取或 。選取程式庫不會為 已選取的項目。請在實作時提供這項資訊
onBindViewHolder()
。 建議您採取下列做法:- 在
onBindViewHolder()
中,撥打setActivated()
- 不是setSelected()
—開啟View
物件,其中包含true
或false
,取決於該項目為 已選取 - 更新檢視區塊的樣式來代表已啟用狀態。三 建議您使用 色彩狀態 列出資源來設定樣式。
- 在
- 使用「
ActionMode
」 為使用者提供可對選取內容執行動作的工具。 - 執行已解讀的次要動作。
- 使用
SelectionTracker.Builder
組合所有內容。 - 包括 活動 生命週期事件。
ItemDetailsLookup
可讓選取項目庫存取
提供RecyclerView
項目的相關資訊
MotionEvent
。
這實際上是
ItemDetails
敬上
備份或擷取來源執行個體
RecyclerView.ViewHolder
執行個體。
註冊
SelectionTracker.SelectionObserver
並在選取項目變更時收到通知首次建立選項時
啟動 ActionMode
以向使用者顯示這個內容,並提供
選取特定動作舉例來說,您可以將刪除按鈕
ActionMode
長條,並連接長條的返回箭頭即可清除
。當選取範圍變為空白時,如果使用者清除
上次選取:終止動作模式。
在事件處理管道結束時,程式庫可能會判斷
使用者嘗試以輕觸、輕觸或
嘗試拖曳一個項目或一組所選項目。註冊適當的事件監聽器來回應這些解釋。如要
資訊,請參閱
SelectionTracker.Builder
。
以下範例說明如何統整這些部分:
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()
方法中選取的狀態。
為了在活動生命週期事件期間保留選取狀態,您的應用程式
必須呼叫選取追蹤程式的
onSaveInstanceState()
和
onRestoreInstanceState()
方法來自活動的
onSaveInstanceState()
和
onRestoreInstanceState()
方法。此外,您的應用程式也必須針對
SelectionTracker.Builder
建構函式。必須提供這個 ID,因為
一個活動或片段可能會有多個不同的可選取清單
而且這些請求必須保存在儲存狀態中
其他資源
詳情請參閱下列參考資料。
- 向日葵
試用版應用程式,該應用程式使用
RecyclerView
。 - 使用 使用 RecyclerView 顯示可捲動的清單程式碼研究室。
- Android Kotlin 基礎知識:RecyclerView 基礎知識程式碼研究室。