RecyclerView 的 ViewHolder 中的 Intent putExtra (Kotlin)
Intent putExtra inside ViewHolder of RecyclerView (Kotlin)
我正在创建一个具有以下 onBind 和 ViewHolder inerrclass 的 RecyclerViewAdapter:
class PreviewMuseoRecyclerViewAdapter(private val context: Context) : RecyclerView.Adapter<PreviewMuseoRecyclerViewAdapter.ViewHolder>() {
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val item = museus[position]
holder.nom.text = item.nom
holder.direccio.text = item.direccio}
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val nom: TextView = view.findViewById(R.id.museu_nom)
val direccio: TextView = view.findViewById(R.id.museu_direccio)
view.setOnClickListener{
Log.i("hola","Funciona2")
context?.startActivity(Intent(context, Mood::class.java))
}
}
}
我能够使用提供的上下文(在 ViewHolder 内)启动新的 activity,但因为那是我唯一可以让 onClickListener 工作的地方(在 onBind 中它没有),我没有需要提供给 putExtra 的值。 我需要在 onBindViewholder 中传递项目的属性(如果 startActivity() 在那里工作,这将不是问题)。
要在单击视图持有者时获取项目,请使用 getAdapterPosition()
方法:
view.setOnClickListener {
val adapterPosition = adapterPosition
if (adapterPosition == RecyclerView.NO_POSITION) {
return@setOnClickListener
}
Log.i("hola","Funciona2")
val item = museus[adapterPosition];
// Pass item to intent and start activity
}
检查 RecyclerView.NO_POSITION
很重要,因为点击“无位置”的项目可能会发生。在动画播放过程中,当项目被移除时单击项目时可能会发生这种情况。
注意:在 androidx.recyclerview
的更高版本中,getAdapterPosition()
被弃用,取而代之的是 getBindingAdapterPosition()
。如果您使用的是最新版本,请使用它。
我正在创建一个具有以下 onBind 和 ViewHolder inerrclass 的 RecyclerViewAdapter:
class PreviewMuseoRecyclerViewAdapter(private val context: Context) : RecyclerView.Adapter<PreviewMuseoRecyclerViewAdapter.ViewHolder>() {
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val item = museus[position]
holder.nom.text = item.nom
holder.direccio.text = item.direccio}
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val nom: TextView = view.findViewById(R.id.museu_nom)
val direccio: TextView = view.findViewById(R.id.museu_direccio)
view.setOnClickListener{
Log.i("hola","Funciona2")
context?.startActivity(Intent(context, Mood::class.java))
}
}
}
我能够使用提供的上下文(在 ViewHolder 内)启动新的 activity,但因为那是我唯一可以让 onClickListener 工作的地方(在 onBind 中它没有),我没有需要提供给 putExtra 的值。 我需要在 onBindViewholder 中传递项目的属性(如果 startActivity() 在那里工作,这将不是问题)。
要在单击视图持有者时获取项目,请使用 getAdapterPosition()
方法:
view.setOnClickListener {
val adapterPosition = adapterPosition
if (adapterPosition == RecyclerView.NO_POSITION) {
return@setOnClickListener
}
Log.i("hola","Funciona2")
val item = museus[adapterPosition];
// Pass item to intent and start activity
}
检查 RecyclerView.NO_POSITION
很重要,因为点击“无位置”的项目可能会发生。在动画播放过程中,当项目被移除时单击项目时可能会发生这种情况。
注意:在 androidx.recyclerview
的更高版本中,getAdapterPosition()
被弃用,取而代之的是 getBindingAdapterPosition()
。如果您使用的是最新版本,请使用它。