recyclerview的每個item都可以添加監聽事件 recyclerview嵌套recyclerview點擊事件



文章插圖
recyclerview的每個item都可以添加監聽事件 recyclerview嵌套recyclerview點擊事件

文章插圖
本文是介紹 RecyclerView 入門 系列文章 的第三篇 。如果您已經對創建 RecyclerView 有了一定的認識,請繼續閱讀本文 。如果尚未熟悉,建議您首先閱讀本系列中的 第一篇文章 。
當使用 RecyclerView 顯示列表數據的時候,您可能需要響應列表元素的點擊事件 。該響應處理包括: 打開包含更多數據的頁面、顯示 toast、刪除某個元素等等 。相關的響應事件雖然數不勝數,但是它們均需要通過 onClick() 來實現 。
定義點擊動作
在創建監聽器之前,在 Activity 類中添加一個函數用于處理點擊之后的響應操作 。
<!--Copyright2019GoogleLLC.SPDX-License-Identifier:Apache-2.0-->privatefunadapterOnClick(flower:Flower){valintent=Intent(this,FlowerDetailActivity()::class.java)intent.putExtra(FLOWER_ID,flower.id)this.startActivity(intent)}接下來,修改 Adapter 的構造函數來傳入 onClick() 函數 。
<!--Copyright2019GoogleLLC.SPDX-License-Identifier:Apache-2.0-->classFlowersAdapter(privatevalonClick:(Flower)->Unit):ListAdapter<Flower,RecyclerView.ViewHolder>(FlowerDiffCallback())在 Activity 類中,在初始化 Adapter 的時候傳入剛剛創建的點擊事件函數 。
<!--Copyright2019GoogleLLC.SPDX-License-Identifier:Apache-2.0-->valflowersAdapter=FlowersAdapter{flower->adapterOnClick(flower)}添加 onClickHandler()
現在響應處理已經定義好了,可以將它關聯到 Adapter 的 ViewHolder 了 。
【recyclerview的每個item都可以添加監聽事件 recyclerview嵌套recyclerview點擊事件】修改 ViewHolder,將 onClick() 作為參數傳入 。
<!--Copyright2019GoogleLLC.SPDX-License-Identifier:Apache-2.0-->classFlowerViewHolder(itemView:View,valonClick:(Flower)->Unit):RecyclerView.ViewHolder(itemView)在初始化的代碼中,調用 itemView 的 setOnClickListener{} 。
<!--Copyright2019GoogleLLC.SPDX-License-Identifier:Apache-2.0-->init{itemView.setOnClickListener{currentFlower?.let{onClick(it)}}}搞定!現在您的 RecyclerView 可以響應點擊事件了 。
編程快樂!
下一步
請查閱包含 onClick() 的 完整示例 。
感謝您閱讀 RecyclerView 系列 文章的第三篇 。請繼續關注未來更多關于 RecyclerView 的內容 。
如果您想了解更多關于 onClick() 的內容,請參考 官方文檔 。