如何在Android Studio中使用Kotlin在RecyclerView上添加Onclick监听器?
所以我想在Android中使用我的RecyclerView
的onclicklistener
,但我不知道该怎么做。
我有一个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 ->{} } }
-
我们来为这个用例定义一个接口:
interface WorkoutClickLisetner{ fun onWorkoutClicked(workout: workout) }
-
将
WorkoutClickListener
添加为CustomAdapter
成员var listener : WorkoutClickListener? = null
在你的
bindItems
方法中注册bindItems
监听器itemView.listener = object : View.OnClickListener { override fun onClick(v: View){ listener?.onWorkoutClicked(workout) } }
-
不要忘记初始化您的
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