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

标签 android android-recyclerview kotlin

所以我想在 Android 中为我的 RecyclerView 设置一个 onclicklistener,但我不确定该怎么做。

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

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

我想让我的锻炼可以点击,这样我就可以使用锻炼中的名称和描述来打开一个新的 Activity ,并将它们作为 Intent 。

感谢任何帮助!

我不明白他把那个扩展名放在“副本”中的什么地方

最佳答案

  1. 让我们为这个用例定义一个接口(interface):

    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当用户单击单元格时,您将在其中委托(delegate)操作:

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

关于android - 如何使用 Kotlin 在 Android Studio 中的 RecyclerView 上添加 Onclick 监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47377929/

相关文章:

android - 为什么 link 元素的 onload 属性对于 android 浏览器不可靠?

java - 如何仅在按下按钮时才重新加载 recyclerview?

spring-boot - Spring Security使用有效的JWT返回403

Android - 通用类型作为 ObservableTransformer 中的表达式

Android - QCMediaPlayer 媒体播放器不存在

android - 如何在关闭/停止android中的 Activity 时创建Bottom-Top动画

android - 使用asmack访问连接到Ejabberd的MySQL

android - 从适配器中生成的值而不是对象变量对 RecyclerView 进行排序?

java - 使用onClick接口(interface)时RecyclerView适配器导致内存泄漏

Kotlin 多变量 let,在下一个 let 中使用前面的变量