我正在创建一个具有以下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内)开始新的活动,但是由于那是我可以使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()
。如果您使用的是最新版本,请使用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句