我一直在尝试将数据(用户的电子邮件和电话)从我的适配器传递到我的片段。从我在网上读到的,我应该使用一个接口,但我不能。我想使用包。有人能解释一下我应该如何通过包传递数据,以及如何在片段中接收数据吗?下面是我的适配器。
class ProductAdapter(
private val onItemClick: (item: ProductResultData) -> Unit,
private val items: List<ProductResultData>
): RecyclerView.Adapter<ProductAdapter.ProductViewHolder>() {
lateinit var context: Context
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProductViewHolder {
context = parent.context
val binding: ProductItemDataBinding = DataBindingUtil.inflate(
LayoutInflater.from(parent.context),
R.layout.rv_product _item,
parent,
false)
return ProductViewHolder(binding)
}
override fun onBindViewHolder(holder: ProductViewHolder, position: Int) {
val productItem = items[position]
holder.bindItem(productItem,context)
}
override fun getItemCount(): Int {
return items.size
}
inner class ProductViewHolder(private val binding: ProductItemDataBinding): RecyclerView.ViewHolder(binding.root){
@SuppressLint("SetTextI18n")
fun bindItem(item: ProductResultData, context: Context){
Glide.with(context)
.load(R.drawable.img_kitchen)
.placeholder(R.drawable.garden_kit)
.into(binding.ivGardenKit)
binding.tvProductName.text = item.product_name
binding.tvPrice.text = "₹" +" "+item.price.toString() + "/ Kit"
binding.tvProductDetails.text = item.about_product
binding.cvProducts.setOnClickListener {
onItemClick.invoke(item)
}
}
}
}
1条答案
按热度按时间ahy6op9u1#
你的适配器代码看起来是正确的。首先,无论何时你有一个lambda参数,它必须被设置为列表的最后一个。
并确保您的
ProductResultData
实现了Parcelable
接口。