Как повесить onClick на каждый элемент recyclerView?
class CardAdapter: RecyclerView.Adapter<CardAdapter.CardHolder>() {
private val cardsList = ArrayList<Card>()
class CardHolder(item: View): RecyclerView.ViewHolder(item) {
private val binding = CardItemBinding.bind(item)
fun bind(card: Card) = with(binding){
imageV.setImageResource(card.imageId)
titleV.text = card.title
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CardHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.card_item,parent,false)
return CardHolder(view)
}
override fun onBindViewHolder(holder: CardHolder, position: Int) {
holder.bind(cardsList[position])
}
override fun getItemCount(): Int {
return cardsList.size
}
fun addCard(card: Card){
cardsList.add(card)
notifyDataSetChanged()
}
fun removeCard(){
if(cardsList.size != 0){
cardsList.removeAt(cardsList.size - 1)
notifyDataSetChanged()
}
}
}
Ответы (1 шт):
Автор решения: Wlad
→ Ссылка
class CardHolder(itemV: View) : RecyclerView.ViewHolder(itemV) {
val delete: ImageView = itemV.findViewById(R.id.delete_img)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CardHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.card_item,parent,false)
val holder = CardHolder(view)
holder.itemView.setOnClickListener {
// просто клик итема
}
holder.delete.setOnClickListener {
// это клик на View,внутри итема, где delete - какая-то View'шка которую ты уже обозначил в самом Холедере
// cardsList[holder.adapterPosition] - нажатый элемент массива
}
return holder
}