# Recycler View 點擊事件用法- kotlin 今天來記錄如何在recycler view加入click事件 [繼上一篇的code來延伸](https://hackmd.io/@rex2763/HJWcoprsP) * 透過設計一個Interface來實現 * 新增一個interface.kt ```kotlin= interface ItemClickListener{ //透過呼叫interface的涵式執行 fun showClick(data: OnePiece) } ``` * 在OnePieceAdapter.kt的類別宣告繼承ItemClickListener的變數 ```kotlin= private var itemClickListener : ItemClickListener ?= null ``` * 在inner class裡的 bindData涵式新增fruitImage這個元件的setOnClickListener事件,就會執行介面的函數showClick,這裡可以依照需求傳遞參數過去做其他處理 ```kotlin= fun bindData(data: OnePiece){ fruitImage.setImageResource(data.imageId) fruitName.text = data.name //設定圖片clicker監聽 fruitImage.setOnClickListener(){ itemClickListener?.showClick(data) } } ``` * 接下來在在OnePieceAdapter類別內新增涵式 * 這個涵式是要給MainActivity呼叫用的 ```kotlin fun setToshowClickListener(listener : ItemClickListener){ //用以呼叫的 itemClickListener = listener } //set方法,可以供Activity或Fragment呼叫 ``` * 最後在MainActivity新增adapter的click監聽器 * 透過Interface執行showClick涵式 ```kotlin= val adapter = OnePieceAdapter(fruitList) recyclerView.adapter = adapter adapter.setToshowClickListener(object: ItemClickListener{ override fun showClick(data: OnePiece) { toShwo() } }) ``` * 透過interface執行的涵式來執行click後需要發生的事情 * 在mainActivity寫一個funtion執行如下 ```kotlin= @SuppressLint("ShowToast") private fun toShwo() { Log.d("xxxxxxxxxxxxxxxx", "ininininininin") Toast.makeText(this@MainActivity, "hello",Toast.LENGTH_LONG).show() } ``` ![](https://i.imgur.com/7CF0R0X.png) ###### tags: `recycler view` `kotlin` `Android`