Click listener en ViewHolder solo responde a veces

Tengo el siguiente fragment de código. A continuación puede ver mi visor, adaptador y mi xml. El problema que estoy encontrando es que el clic a veces no se ejecuta. Solo cuando también configuro clicklisteners en mi visor en la vista de text y en la vista de image de lo que funciona. Presumiblemente, el clic se come por la vista de text y la image. Alguien tiene alguna idea de por qué ocurre este comportamiento.

class GeneralListItemViewHolder(val view: View) : RecyclerView.ViewHolder(view) { var item: GeneralItemViewModel? = null init { view.setOnClickListener { item?.method?.invoke() } } fun bind(item: GeneralItemViewModel) { this.item = item //Do some nice UI things } } 

Mi xml se ve así:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/ListItem"> <ImageView android:id="@+id/general_list_item_icon" style="@style/ListItem.Icon" android:layout_alignParentStart="true" android:layout_centerVertical="true" /> <TextView android:id="@+id/general_list_item_title" style="@style/ListItem.Labels.Title" android:layout_centerVertical="true" android:layout_marginStart="@dimen/margin" android:layout_toEndOf="@id/general_list_item_icon" /> 

Además, mi código adaptador contiene lo siguiente:

 class GeneralItemAdapter(val items: List<GeneralItemViewModel>) : RecyclerView.Adapter<GeneralListItemViewHolder>() { override fun onBindViewHolder(holder: GeneralListItemViewHolder, position: Int) { return holder.bind(getItem(position)) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GeneralListItemViewHolder { val view = parent.inflate(R.layout.general_list_item, false) return GeneralListItemViewHolder(view) } override fun getItemCount(): Int { return items.size } private fun getItem(position: Int): GeneralItemViewModel { return items[position] } } 

Debe configurar ClickListener en el método de vinculación.

En realidad, el problema tiene que ver con el uso de la extensión sintética de kotlin en la vista. Si los usa en la vista variable en lugar de itemView, la vista de text se comerá el clic.

 fun bind(item: AboutGeneralItemViewModel) { this.item = item itemView.general_list_item_title.text = item.value itemView.setOnClickListener { item?.method?.invoke() } } 
  • El tipo Out-Projected 'ArrayList <*>' prohíbe el uso de 'public fun fun add (índice: Int, elemento: E): Unidad definida en java.util.ArrayList'
  • Hacer clic en una vista de text para cambiar el fragment
  • UNRESOLVED_REFERENCE en widget (TextView) resuelto al elemento error en android-kotlin
  • La extensión sintética de Kotlin y varias incluyen el mismo layout
  • Cómo modificar la variable de instancia de AsyncTask por separado
  • El complemento gradle de Android se queja de un error de traducción no detectada
  • No se puede networkingucir una list de booleans en kotlin
  • Usando Anko getting type Error de falta de correspondencia requerido AnkoContext <ViewGroup> Found AnkoContext <Context>
  • Android Kotlin - Volley Código de respuesta inesperada 400
  • Base de datos de android de Kotlin: no se puede convertir java.lang.String en android.database.Cursor
  • Cómo configurarOnNavigationItemListener en BottomNavigationView en Android usando Kotlin?