如何使用 Recyclerview Adapter 获取购物车中的总数
How to get the total count in cart using Recyclerview Adapter
您好,我在我的 Android 应用程序中使用带适配器的 Recyclerview。在我的应用程序中,我有产品列表屏幕,用户可以在其中设置每个列表项中的数量。我正在使用两个图像视图来增加和减少数量。现在的问题是,如果我为第一个产品制作 2 个数量,为第二个产品制作 4 个数量,则我的购物车屏幕的总数应该为 6,但我无法获得总数。以下是我的适配器代码,有人可以帮我吗?
class ProductAdapter(private val cellClickListener: CellClickListener) : RecyclerView.Adapter<ProductViewHolder>() {
var productsList = mutableListOf<Product>()
var cartList = mutableListOf<Product>()
/* fun setMovieList(movies: List<MobileList>) {
this.movies = movies.toMutableList()
notifyDataSetChanged()
}*/
fun addData(data:List<Product>){
productsList.addAll(data)
notifyDataSetChanged()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProductViewHolder {
val inflater = LayoutInflater.from(parent.context)
val binding = AdapterLayoutBinding.inflate(inflater, parent, false)
return ProductViewHolder(binding)
}
override fun onBindViewHolder(holder: ProductViewHolder, position: Int) {
val products = productsList[position]
holder.binding.name.text = products.name
holder.binding.price.text = products.price
Glide.with(holder.itemView.context).load(products.image_url).into(holder.binding.imageview)
var cartCount : Int=0
holder.binding.cartPlus.setOnClickListener {
cartCount++
holder.binding.cartValue.text = cartCount.toString()
cartList.add(products)
//println(cartList)
}
holder.binding.cartMinus.setOnClickListener {
cartCount--
holder.binding.cartValue.text = cartCount.toString()
cartList.remove(products)
// println(cartList)
}
fun updatedData( updatedcartList:List<Product>){
cartList.addAll(updatedcartList)
}
holder.itemView.setOnClickListener {
cellClickListener.onCellClickListener(products,cartCount)
}
}
override fun getItemCount(): Int {
return productsList.size
}
}
class ProductViewHolder(val binding: AdapterLayoutBinding) : RecyclerView.ViewHolder(binding.root) {
}
interface CellClickListener {
fun onCellClickListener(data: Product,count:Int)
}
使用 cartlist.size()
作为总计数。
为了在 activity 中使用,请在 Adapter class:
中定义
class ProductAdapter(private val..
{
...
fun getCartSize():Int {
return cartlist.size()
}
...
}
并且在 activity 中你可以使用 :
adapter.getCartsize()
因为您只是将列表传递给 recycleview
并想在片段或 activity 中使用它。我会建议使用列表来获取您的项目的总数。您可以使用 sumOf
到您的列表。
你可以在传递到回收视图之前像这样使用它。
val totalCount = list.sumOf { it.quantity }
或
txtView.text = list.sumOf {it.quantity}.toString()
您好,我在我的 Android 应用程序中使用带适配器的 Recyclerview。在我的应用程序中,我有产品列表屏幕,用户可以在其中设置每个列表项中的数量。我正在使用两个图像视图来增加和减少数量。现在的问题是,如果我为第一个产品制作 2 个数量,为第二个产品制作 4 个数量,则我的购物车屏幕的总数应该为 6,但我无法获得总数。以下是我的适配器代码,有人可以帮我吗?
class ProductAdapter(private val cellClickListener: CellClickListener) : RecyclerView.Adapter<ProductViewHolder>() {
var productsList = mutableListOf<Product>()
var cartList = mutableListOf<Product>()
/* fun setMovieList(movies: List<MobileList>) {
this.movies = movies.toMutableList()
notifyDataSetChanged()
}*/
fun addData(data:List<Product>){
productsList.addAll(data)
notifyDataSetChanged()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProductViewHolder {
val inflater = LayoutInflater.from(parent.context)
val binding = AdapterLayoutBinding.inflate(inflater, parent, false)
return ProductViewHolder(binding)
}
override fun onBindViewHolder(holder: ProductViewHolder, position: Int) {
val products = productsList[position]
holder.binding.name.text = products.name
holder.binding.price.text = products.price
Glide.with(holder.itemView.context).load(products.image_url).into(holder.binding.imageview)
var cartCount : Int=0
holder.binding.cartPlus.setOnClickListener {
cartCount++
holder.binding.cartValue.text = cartCount.toString()
cartList.add(products)
//println(cartList)
}
holder.binding.cartMinus.setOnClickListener {
cartCount--
holder.binding.cartValue.text = cartCount.toString()
cartList.remove(products)
// println(cartList)
}
fun updatedData( updatedcartList:List<Product>){
cartList.addAll(updatedcartList)
}
holder.itemView.setOnClickListener {
cellClickListener.onCellClickListener(products,cartCount)
}
}
override fun getItemCount(): Int {
return productsList.size
}
}
class ProductViewHolder(val binding: AdapterLayoutBinding) : RecyclerView.ViewHolder(binding.root) {
}
interface CellClickListener {
fun onCellClickListener(data: Product,count:Int)
}
使用 cartlist.size()
作为总计数。
为了在 activity 中使用,请在 Adapter class:
class ProductAdapter(private val..
{
...
fun getCartSize():Int {
return cartlist.size()
}
...
}
并且在 activity 中你可以使用 :
adapter.getCartsize()
因为您只是将列表传递给 recycleview
并想在片段或 activity 中使用它。我会建议使用列表来获取您的项目的总数。您可以使用 sumOf
到您的列表。
你可以在传递到回收视图之前像这样使用它。
val totalCount = list.sumOf { it.quantity }
或
txtView.text = list.sumOf {it.quantity}.toString()