#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, когда я нажимаю «применить изменения и запустить», слушатель не вызывается, как будто изменения не были применены. Но после удаления приложения на устройстве и переустановки оно работает отлично