如何在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 

我想使我的训练可点击,所以我可以使用锻炼的名称和描述来打开一个新的活动,作为他们的意图。

任何帮助表示赞赏!

我不知道他把这个扩展名放在“重复”

3 Solutions collect form web for “如何在Android Studio中使用Kotlin在RecyclerView上添加Onclick监听器?”

在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

  • 在Kotlin接收器对象和扩展
  • 将android hashmap转换为kotlin
  • 在ReactDOMBuilder.render中引用div的正确方法是什么?
  • Android - 在Kotlin中声明和使用视图
  • Android中的MVVM绑定
  • Intellij Idea kotlin不能自动导入一些运算符函数,例如+
  • 使用伴随对象在Kotlin中返回类的一个实例
  • 如何使用Kotlin何时查找字符串是否为数字?
  • Kotlin recyclerview给了我空指针例外
  • 在Kotlin中可以使用Mockito吗?
  • 在使用arrayOfNulls时,是否可以删除Kotlin中未经检查的转换?
  • Kotlin language will be the best programming language for Android.