¿Cómo agregar un oyente Onclick en un RecyclerView en Android Studio con Kotlin?

así que quiero tener un onclicklistener para mi RecyclerView en Android, pero no estoy seguro de cómo debería hacerlo.

Tengo una CustomAdapterClass para mi Workoutlist que se ve así:

 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 } } } 

Y empujo mis entrenamientos de esta manera (en mi 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 

Me gustaría hacer clic en mis entrenamientos para poder usar el nombre y la descripción del entrenamiento para abrir una nueva actividad con ellos como la intención.

¡Cualquier ayuda es apreciada!

No entiendo dónde puso esa extensión en el "duplicado"

utilízalo dentro de viewHolder

  override fun onClick(view: View) { } 

si tiene una identificación específica

 @OnClick(R.id.id1, R.id.id2) fun onClick(view: View) { when (view.id) { R.id.id1 -> {} R.id.id2 -> {} else ->{} } } 

Bien chicos, descubrí cómo implementar un onclicklistener en Kotlin, aquí está el enlace: https://gist.github.com/nesquena/231e356f372f214c4fe6

  1. Definamos una interfaz para este caso de uso:

     interface WorkoutClickLisetner{ fun onWorkoutClicked(workout: workout) } 
  2. Agregar WorkoutClickListener como miembro de CustomAdapter

     var listener : WorkoutClickListener? = null 

    registrarse click oyente para itemView dentro de su método bindItems

     itemView.listener = object : View.OnClickListener { override fun onClick(v: View){ listener?.onWorkoutClicked(workout) } } 
  3. No olvide WorkoutClickListener su WorkoutClickListener donde delegará la acción cuando el usuario click la celda:

     val adapter = CustomAdapter(workouts) adapter.listener = object : WorkoutClickListener { override fun onWorkoutClicked(workout: workout){ /*your delegation goes here*/` } } recyclerView.adapter = adapter 
  • Recycler View no se desplaza suavemente
  • ¿Cómo cambiar el color de background de una vista de carta cuando se selecciona?
  • RecyclerView animation de elementos, se llama AnimationFinished, pero no está activado en AnimationStarted. ¿Por qué?
  • Color de background e image arrastrando en Scroll en recyclerView Android usando Group Adaptor
  • Android - Kotlin: el object debe declararse abstracto o implementar miembro abstracto
  • RecyclerView.ViewHolder no se vincula correctamente
  • DiffUtils y multi selección
  • La image no se muestra en Recyclerview usando Glide
  • ¿Cómo uso un onItemLongClickListener en mi actividad en Android?
  • Cómo implementar un reciclador de carga perezosa. Adaptador de vista como el reciclador de reino. Ver el adaptador usando kotlin.
  • My RecyclerView no se notifica adecuadamente