如何在Android Studio中使用Kotlin在RecyclerView上添加Onclick监听器?

所以我想在Android中使用我的RecyclerViewonclicklistener ,但我不知道该怎么做。

我有一个CustomAdapterClass用于我的Workoutlist ,如下所示:

 class CustomAdapter(val workoutList: ArrayList) : RecyclerView.Adapter() { 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(R.id.cardDate) val cardDescription = itemView.findViewById(R.id.cardDescription) cardDate.text = workout.date cardDescription.text = workout.description } } } 

而且我像这样(在我的Main Activity )推动我的训练:

  val recyclerView = findViewById(R.id.RecyclerView) recyclerView.layoutManager = GridLayoutManager(this, 3) val workouts = ArrayList() 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) { } 

如果你有特定的ID

 @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 

    在你的bindItems方法中注册bindItems监听器

     itemView.listener = object : View.OnClickListener { override fun onClick(v: View){ listener?.onWorkoutClicked(workout) } } 
  3. 不要忘记初始化您的WorkoutClickListener ,您将在用户单击单元格时委派操作:

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

好吧,我发现如何在Kotlin中实现一个onclicklistener,这里是链接: https ://gist.github.com/nesquena/231e356f372f214c4fe6