【问题标题】:Set the range for increment and decrement button in kotlin在kotlin中设置递增和递减按钮的范围
【发布时间】:2021-04-30 11:29:17
【问题描述】:

我为我的大学项目创建了一个应用程序,它是一个获取产品数量并存储在数据库中的应用程序。

问题是当我减少它低于 0(-1,-2....) 所以我想设置范围,当我减少时最小 0,当我增加它时最大 10。

截图

这是我的代码..

 override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    (holder as ViewHolder).bind(cartItems[position])

    holder.itemView.decrement_in_cart.setOnClickListener {
        val databaseHelper = DatabaseHelper(it.context)
        val item_name = holder.itemView.cart_item_name.text.toString()
        val count = holder.itemView.cart_item_count.text.toString().toInt()
        val count_new = databaseHelper.increase_decrease_in_cart("decrement", item_name, count)
        holder.itemView.cart_item_count.text = count_new.toString()
    }

    holder.itemView.increment_in_cart.setOnClickListener {
        val databaseHelper = DatabaseHelper(it.context)
        val item_name = holder.itemView.cart_item_name.text.toString()
        val count = holder.itemView.cart_item_count.text.toString().toInt()
        val count_new = databaseHelper.increase_decrease_in_cart("increment", item_name, count)
        holder.itemView.cart_item_count.text = count_new.toString()
    }

    holder.itemView.remove_from_cart.setOnClickListener {
        val databaseHelper = DatabaseHelper(it.context)
        val item_name = holder.itemView.cart_item_name.text.toString()
        databaseHelper.delete_from_cart(item_name)
        val cartFirebase = Cart_Firebase()
        cartFirebase.updateCart()
    }

}

【问题讨论】:

  • 如果您使用的是实时数据库,您也可以考虑使用here 解释的事务,或者如果您使用的是 Cloud Firestore,请查看this

标签: android firebase kotlin increment


【解决方案1】:
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    (holder as ViewHolder).bind(cartItems[position])

    holder.itemView.decrement_in_cart.setOnClickListener {
        val databaseHelper = DatabaseHelper(it.context)
        val item_name = holder.itemView.cart_item_name.text.toString()
        val count = itemCountCheck(holder.itemView.cart_item_count.text.toString().toInt())
        val count_new = databaseHelper.increase_decrease_in_cart("decrement", item_name, count)
        holder.itemView.cart_item_count.text = count_new.toString()
    }

    holder.itemView.increment_in_cart.setOnClickListener {
        val databaseHelper = DatabaseHelper(it.context)
        val item_name = holder.itemView.cart_item_name.text.toString()
        val count = itemCountCheck(holder.itemView.cart_item_count.text.toString().toInt())
        val count_new = databaseHelper.increase_decrease_in_cart("increment", item_name, count)
        holder.itemView.cart_item_count.text = count_new.toString()
    }

    holder.itemView.remove_from_cart.setOnClickListener {
        val databaseHelper = DatabaseHelper(it.context)
        val item_name = holder.itemView.cart_item_name.text.toString()
        databaseHelper.delete_from_cart(item_name)
        val cartFirebase = Cart_Firebase()
        cartFirebase.updateCart()
    }

}

private fun itemCountCheck(value: Int):Int {
   if(value < 0){
      return 0
   }else if(value > 10){
      return 10
   }else{
      return value
   }
}

你可以通过编写一个最小的函数来实现。

【讨论】:

  • 我根据输入的值写一个答案。 -1,-2,-3,-4 -> 返回 0 ||| 0 , 1, 2, 3 ,5...10 -> 返回 0 , 1, 2, 3 ,5...10 11 , 12 , 13.... -> 返回 10 谢谢@a_local_nobody
  • 我最初认为这可能会导致问题,但我看到你将函数的结果分配给一个变量,然后使用该变量,所以我想它可以工作:)跨度>
【解决方案2】:
val count = itemCountCheck(holder.itemView.cart_item_count.text.toString().toInt())
val count_new = databaseHelper.increase_decrease_in_cart("decrement", item_name, count)
holder.itemView.cart_item_count.text = count_new.toString()

你是

  • 读取当前item_count
  • 将其传递给databaseHelper 中的函数并存储结果
  • 将该结果设置为显示中的新item_count

所以您可能应该在databaseHelper 中处理您的边界逻辑,因为这是进行验证、计算新计数并告诉您它是什么的东西。

(真的databaseHelper 应该在内部保存当前计数,您只需使用项目名称调用“increment”或“decrement”,这样它就可以更新并为您提供一个新值来显示。您不需要阅读显示屏以告诉它当前购物车中有什么,你知道吗?这种方式可能会导致错误和安全问题)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多