Я пытаюсь добавить OnClickListener к элементу просмотра рециркулятора, однако я получаю эту ошибку
lateinit property listener has not been initialized
Вот как выглядит мой адаптер
class CartAdapter(private val cartItems: List<CartItemEntity>? = null) : RecyclerView.Adapter<CartAdapter.CartViewHolder>() {
private lateinit var listener: OnItemClickListener
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CartViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.cart_item, parent, false)
return CartViewHolder(view, cartItems!!, listener)
}
override fun getItemCount() = cartItems!!.size
override fun onBindViewHolder(holder: CartViewHolder, position: Int) {
val cartItem = cartItems?.get(position)
holder.productPrice.text = cartItem.productPrice.toInt().toString()
holder.cart = listOf(cartItem)
}
class CartViewHolder(val view: View, var cart: List<CartItemEntity>, listener: OnItemClickListener) : RecyclerView.ViewHolder(view) {
private val cartRemove: TextView = view.findViewById(R.id.cartRemove)
init {
cartRemove.setOnClickListener {
listener.onItemClick(cart)
}
}
}
interface OnItemClickListener{
fun onItemClick(cartItems: List<CartItemEntity>?)
}
fun setOnItemClickListener(listener: OnItemClickListener){
this.listener = listener
}
}
Вот как я Я использую это в моем фрагменте
adapter!!.setOnItemClickListener(object : CartAdapter.OnItemClickListener{
override fun onItemClick(cartItems: List<CartItemEntity>?) {
Log.e("Cart Item", ""+ cartItems!![0].id)
}
})
Не уверен, что делаю не так