将onClick从onBindViewHilder移至片段

问题描述 投票:0回答:1

我正在实现nestedRecyclerView]上的onClick,onClick在子recyclerView中,而我正在RecyclerView的onBindViewHolder中实现它。但是,我想将其传输到一个片段,以便在单击按钮后可以访问其viewmodel。

这就是我的回收站视图

class ProductAdapter(private val context: Context, private val productModel: List<Product>) :
    RecyclerView.Adapter<ProductAdapter.ProductView>() {


    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProductView {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.product_item, parent, false)
        return ProductView(view, productModel)
    }

    override fun getItemCount(): Int {
        return productModel.size
    }

    override fun onBindViewHolder(holder: ProductView, position: Int) {
        var product = productModel[position]
        holder.product = listOf(product)
        holder.setClick(object : ItemClickListener {
            override fun onItemClickListener(view: View, position: Int) {
                Toast.makeText(context, "" + productModel[position].productName, Toast.LENGTH_SHORT)
                    .show()
            }
        })
    }
    class ProductView(itemView: View, var product: List<Product>) :
        RecyclerView.ViewHolder(itemView), View.OnClickListener {
        private val addToCart: ImageView = itemView.findViewById(R.id.addToCart)
        lateinit var listener: ItemClickListener

        fun setClick(listener: ItemClickListener) {
            this.listener = listener
        }

        init {
            addToCart.setOnClickListener(this)
        }

        override fun onClick(v: View?) {
            listener.onItemClickListener(v!!, adapterPosition)
        }
    }
    interface ItemClickListener {
        fun onItemClickListener(view: View, position: Int)
    }
}

我正在nestedRecyclerView上实现onClick,onClick在子recyclerView中,而我正在RecyclerView的onBindViewHolder中实现。但是,我想转移它...

android mvvm android-recyclerview recycler-adapter
1个回答
0
投票

移动您的setClick()函数并在适配器

© www.soinside.com 2019 - 2024. All rights reserved.