---
# System prepended metadata

title: Recycler View 點擊事件用法- kotlin
tags: [recycler view, Android, kotlin]

---

# 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` 