1

Excuse me, i just wanna ask about how to count total price from recycler view using roomdb. So, everytime the user click the button add stock, the cart is supposed to be updated. And from the updated cart i can count the total price that came from sum all the price from the cart. but in fact, the cart didn't updated if i print all the cart contents . But one of feature of Android studio that is app inspection, it says updated that proved by stock updated per item. what am i supposed to do? thank you

it is my CartAdapter.kt

package com.rhiquest.aplikasiresellerbasoaci.roomdb

 import ...

 class CartAdapter(
 private val listItems: ArrayList<Cart>,
private val listener: OnAdapterListener
) : RecyclerView.Adapter<CartAdapter.CartViewHolder>() {

private lateinit var database: CartRoomDatabase
private lateinit var dao: CartDao

interface OnAdapterListener{
    fun onUpdateTotal()
}

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

@SuppressLint("NotifyDataSetChanged")
override fun onBindViewHolder(holder: CartViewHolder, position: Int) {

    database = CartRoomDatabase.getDatabase(holder.itemView.context.applicationContext)
    dao = database.getCartDao()
    var item = listItems[position]
    holder.tv_namaproduk.text = item.namaproduk
    //holder.tv_hargaproduk.text = item.hargaproduk.toString()

    Glide.with(holder.iv_gambarproduk)
        .load(item.gambarproduk)
        .error(R.drawable.bannerwelcome)
        .into(holder.iv_gambarproduk)

    holder.itemView.togglebtneg.addOnButtonCheckedListener { togglebtneg, checkedId, isChecked ->
        if (isChecked){
            when(checkedId){
                R.id.btn_ecer ->{
                    var itemcart = 0
                    var totalperitem = 0
                    holder.tv_stokproduk.text = itemcart.toString()
                    holder.itemView.iv_tambahstok.setOnClickListener {
                        itemcart++
                        holder.tv_stokproduk.text = itemcart.toString()
                        totalperitem = itemcart*item.hargaproduk
                        var data =
                            Cart(id = item.id, namaproduk = item.namaproduk,
                                hargaproduk = item.hargaproduk, gambarproduk = item.gambarproduk,
                                stokproduk = itemcart)
                        updatecart(data)
                        holder.tv_hargaproduk.text = totalperitem.toString()
                        listener.onUpdateTotal()
                    }
                    holder.itemView.iv_kurangstok.setOnClickListener {
                        itemcart--
                        holder.tv_stokproduk.text = itemcart.toString()
                        totalperitem = itemcart*item.hargaproduk
                        var data = Cart(
                            id = item.id, namaproduk = item.namaproduk,
                            hargaproduk = item.hargaproduk, gambarproduk = item.gambarproduk,
                            stokproduk = itemcart)
                        updatecart(data)
                        holder.tv_hargaproduk.text = totalperitem.toString()
                        listener.onUpdateTotal()
                    }
                }
                R.id.btn_grosir ->{
                    var itemcart = 0
                    var totalperitem = 0
                    holder.tv_stokproduk.text = itemcart.toString()
                    holder.itemView.iv_tambahstok.setOnClickListener {
                        itemcart+=5
                        holder.tv_stokproduk.text = itemcart.toString()
                        totalperitem = itemcart*item.hargaproduk
                        var data = Cart(
                            id = item.id, namaproduk = item.namaproduk,
                            hargaproduk = item.hargaproduk, gambarproduk = item.gambarproduk,
                            stokproduk = itemcart)
                        updatecart(data)
                        holder.tv_hargaproduk.text = totalperitem.toString()
                        listener.onUpdateTotal()

                    }
                    holder.itemView.iv_kurangstok.setOnClickListener {
                        itemcart-=5
                        holder.tv_stokproduk.text = itemcart.toString()
                        totalperitem = itemcart*item.hargaproduk
                        var data = Cart(
                            id = item.id, namaproduk = item.namaproduk,
                            hargaproduk = item.hargaproduk, gambarproduk = item.gambarproduk,
                            stokproduk = itemcart)
                        updatecart(data)
                        holder.tv_hargaproduk.text = totalperitem.toString()
                        listener.onUpdateTotal()
                    }
                }
            }
        } else {
            if(togglebtneg.checkedButtonId == View.NO_ID){
                Log.d("toggle","No button selected")
            }
        }
    }

    /*holder.itemView.iv_frameecer.setOnClickListener {
        val harga = item.hargaproduk
        holder.tv_stokproduk.text = "0"
        var itemcart = 0
        if (statusecer){
                holder.itemView.iv_frameecer.setImageResource(R.drawable.bg_button_outline)
                statusecer = false
            }else{
                holder.itemView.iv_frameecer.setImageResource(R.drawable.ecer_selected)
                holder.itemView.iv_framegrosir.setImageResource(R.drawable.bg_button_outline)
                statusecer = true
                holder.itemView.iv_tambahstok.setOnClickListener {
                        itemcart++
                        holder.tv_stokproduk.text = itemcart.toString()
                        holder.tv_hargaproduk.text = harga.toString()
                        val data = Cart(
                            id = listItems[position].id,
                            namaproduk = listItems[position].namaproduk,
                            hargaproduk = listItems[position].hargaproduk,
                            stokproduk = itemcart
                        )
                        updatecart(data)
                    listener.onUpdateTotal()
                }
                holder.itemView.iv_kurangstok.setOnClickListener{
                        itemcart--
                        holder.tv_stokproduk.text = itemcart.toString()
                        holder.tv_hargaproduk.text = harga.toString()
                        val data = Cart(
                            id = listItems[position].id,
                            namaproduk = listItems[position].namaproduk,
                            hargaproduk = listItems[position].hargaproduk,
                            stokproduk = itemcart
                        )
                        updatecart(data)
                        listener.onUpdateTotal()
                }
            }
        }

    holder.itemView.iv_framegrosir.setOnClickListener {
        val harga = item.hargaproduk
        holder.tv_stokproduk.text = "0"
        var itemcart = 0
        if (statusgrosir){
            holder.itemView.iv_framegrosir.setImageResource(R.drawable.bg_button_outline)
            statusgrosir = false
        }else{
            holder.itemView.iv_framegrosir.setImageResource(R.drawable.ecer_selected)
            holder.itemView.iv_frameecer.setImageResource(R.drawable.bg_button_outline)
            statusgrosir = true
            holder.itemView.iv_tambahstok.setOnClickListener {
                    itemcart += 5
                    holder.tv_stokproduk.text = itemcart.toString()
                    holder.tv_hargaproduk.text = harga.toString()
                    val data = Cart(
                        id = listItems[position].id,
                        namaproduk = listItems[position].namaproduk,
                        hargaproduk = listItems[position].hargaproduk,
                        stokproduk = itemcart
                    )
                    updatecart(data)
                    listener.onUpdateTotal()
            }
            holder.itemView.iv_kurangstok.setOnClickListener {
                    itemcart-=5
                    holder.tv_stokproduk.text = itemcart.toString()
                    holder.tv_hargaproduk.text = harga.toString()
                    val data = Cart(
                        id = listItems[position].id,
                        namaproduk = listItems[position].namaproduk,
                        hargaproduk = listItems[position].hargaproduk,
                        stokproduk = itemcart
                    )
                    updatecart(data)
                    listener.onUpdateTotal()
            }
        }
    }*/

    holder.itemView.iv_deletecart.setOnClickListener {
        dao.delete(listItems[position])
        listItems.removeAt(position)
        notifyDataSetChanged()
        notifyItemRangeChanged(position, listItems.size)
        listener.onUpdateTotal()
    }
}

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

@SuppressLint("NotifyDataSetChanged")
private fun updatecart(cart: Cart) {
    dao.update(cart)
    notifyDataSetChanged()
}


class CartViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
    var tv_namaproduk = itemView.findViewById<TextView>(R.id.tv_namaprodukfin)
    var tv_hargaproduk = itemView.findViewById<TextView>(R.id.tv_hargaprodukfin)
    var tv_stokproduk = itemView.findViewById<TextView>(R.id.tv_banyakstok)
    var iv_gambarproduk = itemView.findViewById<ImageView>(R.id.iv_cartitem)
}

}

than it's my activity/fragment

 package com.rhiquest.aplikasiresellerbasoaci.fragment

import ...

class KeranjangFragment : Fragment() {


private lateinit var database: CartRoomDatabase
private lateinit var dao: CartDao

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.keranjang_fragment, container, false)
}

override fun onActivityCreated(savedInstanceState: Bundle?) {
    super.onActivityCreated(savedInstanceState)
    database = CartRoomDatabase.getDatabase(requireContext().applicationContext)
    dao = database.getCartDao()

    getCartList()

    btn_checkout.setOnClickListener{
        startActivity(Intent(context, DeskripsiCheckoutActivity::class.java))
    }

    btn_login_keranjang.setOnClickListener {
        startActivity(Intent(context, ModeLoginActivity::class.java))
    }

    btn_register_keranjang.setOnClickListener {
        startActivity(Intent(context, ModeRegisterActivity::class.java))
    }
}

private fun getCartList() {
    val sharedpreferencesLogged = requireActivity().getSharedPreferences("sp_login", android.content.Context.MODE_PRIVATE)
    val loginid = sharedpreferencesLogged.getString("login_id", null)
    val database = CartRoomDatabase.getDatabase(requireContext().applicationContext)
    val dao = database.getCartDao()
    val listitem = arrayListOf<Cart>()
    listitem.addAll(dao.getAll())
    if(loginid == null){
        scrollview_profile_keranjang.visibility = View.VISIBLE
        ln_filledcart.visibility = View.INVISIBLE
        ln_emptycart.visibility = View.INVISIBLE
    }else{
        scrollview_profile_keranjang.visibility = View.INVISIBLE
        if (listitem.size == 0){
            ln_filledcart.visibility = View.INVISIBLE
            ln_emptycart.visibility = View.VISIBLE
        } else {
            ln_filledcart.visibility = View.VISIBLE
            rv_cartitem.layoutManager = LinearLayoutManager(activity)
            val adaptertemp = CartAdapter(listitem, object : CartAdapter.OnAdapterListener{
                override fun onUpdateTotal() {
                    var sum = 0
                    for (i in 0 until listitem.size) {
                        sum += (listitem[i].hargaproduk* listitem[i].stokproduk)                           //12000 //24000
                       }
                    tv_total.text = sum.toString()
                }
            })
            rv_cartitem.adapter = adaptertemp
            ln_emptycart.visibility = View.INVISIBLE
        }
    }
}

}

0 Answers0