Как добавить слушателя Onclick в RecyclerView в Android Studio с Kotlin?

поэтому я хочу иметь onclicklistener для моего RecyclerView в Android, но я не уверен, как это сделать.

У меня есть CustomAdapterClass для моего Workoutlist который выглядит так:

 class CustomAdapter(val workoutList: ArrayList<workout>) : RecyclerView.Adapter<CustomAdapter.ViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomAdapter.ViewHolder { val v = LayoutInflater.from(parent.context).inflate(R.layout.list_layout, parent, false) return ViewHolder(v) } override fun onBindViewHolder(holder: CustomAdapter.ViewHolder, position: Int) { holder.bindItems(workoutList[position]) } override fun getItemCount(): Int { return workoutList.size } class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { fun bindItems(workout: workout) { val cardDate = itemView.findViewById<TextView>(R.id.cardDate) val cardDescription = itemView.findViewById<TextView>(R.id.cardDescription) cardDate.text = workout.date cardDescription.text = workout.description } } } 

И я толкаю свои тренировки так (в моей Main Activity ):

  val recyclerView = findViewById<RecyclerView>(R.id.RecyclerView) recyclerView.layoutManager = GridLayoutManager(this, 3) val workouts = ArrayList<workout>() workouts.add(workout("12.09.2018", "Kniebeugen und Bizeps + Rücken")) workouts.add(workout("12.09.2018", "Kniebeugen und Bizeps + Rücken")) workouts.add(workout("12.09.2018", "Kniebeugen und Bizeps + Rücken")) workouts.add(workout("12.09.2018", "Kniebeugen und Bizeps + Rücken")) workouts.add(workout("12.09.2018", "Kniebeugen und Bizeps + Rücken")) workouts.add(workout("12.09.2018", "Kniebeugen und Bizeps + Rücken")) workouts.add(workout("12.09.2018", "Kniebeugen und Bizeps + Rücken")) workouts.add(workout("12.09.2018", "Kniebeugen und Bizeps + Rücken")) val adapter = CustomAdapter(workouts) recyclerView.adapter = adapter 

Я хотел бы сделать мои тренировки интерактивными, и поэтому я могу использовать имя и описание из тренировки, чтобы открыть с ними новую деятельность в качестве намерения.

Любая помощь приветствуется!

Я не понимаю, где он помещает это расширение в "дубликат"

использовать его внутри viewHolder

  override fun onClick(view: View) { } 

если у вас есть определенный идентификатор

 @OnClick(R.id.id1, R.id.id2) fun onClick(view: View) { when (view.id) { R.id.id1 -> {} R.id.id2 -> {} else ->{} } } 
  1. Давайте определим интерфейс для этого прецедента:

     interface WorkoutClickLisetner{ fun onWorkoutClicked(workout: workout) } 
  2. Добавить WorkoutClickListener качестве члена CustomAdapter

     var listener : WorkoutClickListener? = null 

    регистрировать клик для itemView внутри вашего метода bindItems

     itemView.listener = object : View.OnClickListener { override fun onClick(v: View){ listener?.onWorkoutClicked(workout) } } 
  3. Не забудьте WorkoutClickListener свой WorkoutClickListener где вы будете делегировать действие, когда пользователь нажимает на ячейку:

     val adapter = CustomAdapter(workouts) adapter.listener = object : WorkoutClickListener { override fun onWorkoutClicked(workout: workout){ /*your delegation goes here*/` } } recyclerView.adapter = adapter 

Хорошо, ребята, я узнал, как реализовать onclicklistener в Котлине, вот ссылка: https://gist.github.com/nesquena/231e356f372f214c4fe6