Почему OnClickListener никогда не вызывается, пока OnLongClickListener

#android #kotlin #android-recyclerview

#Android #kotlin #android-recyclerview

Вопрос:

У меня есть адаптер для RecyclerView. Он регистрирует прослушивателей кликов для просмотров:

  override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProductCardViewHolder {
        val productView = LayoutInflater.from(parent.context).inflate(R.layout.product_card_item, parent, false)
        val holder = ProductCardViewHolder(productView)

        holder.itemView.setOnClickListener {
            Toast.makeText(it.context, "CLICK", Toast.LENGTH_SHORT).show()
        }

        holder.itemView.setOnLongClickListener {
            Toast.makeText(it.context, "LONG", Toast.LENGTH_SHORT).show()
            false
        }

        return holder
}
 

И это layout ( R.layout.product_card_item )

 <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="200dp"
    android:layout_margin="8dp"
    app:cardCornerRadius="20dp"
    android:layout_height="300dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="4dp">

        <ImageView
            android:id="@ id/product_img"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:layout_marginEnd="8dp" />

        <TextView
            android:id="@ id/product_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="16sp"
            android:layout_below="@id/product_img"
            android:textColor="@android:color/black" />
    </RelativeLayout>
</androidx.cardview.widget.CardView>
 

Когда я долго нажимаю на элемент, он вызывает прослушиватель длинных щелчков, но когда я просто нажимаю на элемент, прослушиватель щелчков никогда не вызывается, почему это?

Комментарии:

1. можете ли вы показать onBindViewHolder метод? это должно сработать, но, возможно, в каком-то другом месте вы переопределяете этот прослушиватель (или фреймворк делает это под капотом)

2. @snachmsm Я обнаружил проблему, я думаю, это похоже на проблему Android Studio, когда я нажимаю «применить изменения и запустить», слушатель не вызывается, как будто изменения не были применены. Но после удаления приложения на устройстве и переустановки оно работает отлично