とっとこメモ

困った時のエンジニアメモ。Unity, Kotlin, Flutter などなど

【Kotlin】RecyclerView のクリックイベントを親のActivity(呼び出し元)で定義する

Adapterファイル

class CustomAdapter(private val customList: Array<String>) : RecyclerView.Adapter<CustomAdapter.CustomViewHolder>(){
 ........
 
   //リスナー格納変数
 lateinit var listener: OnItemClickListener

    // ViewHolderに表示する画像とテキストを挿入
    override fun onBindViewHolder(holder: CustomViewHolder, position: Int) {
        // タップしたとき
        holder.view.setOnClickListener {
            listener.onItemClickListener(it, position, customList[position])
        }
    }

    //インターフェースの作成する
    interface OnItemClickListener{
        //呼び出し元で利用予定の引数を用意しておく
        fun onItemClickListener(view: View, position: Int, clickedText: String)
    }

    // リスナーをセットする
    fun setOnItemClickListener(listener: OnItemClickListener){
        this.listener = listener
    }
}

呼び出し元Activityファイル

        adapter.setOnItemClickListener(object : CustomAdapter.OnItemClickListener {
            override fun onItemClickListener(view: View, position: Int, clickedText: String) {
                tTap.text = "${clickedText}がタップされました。"
            }
        })