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
}
}
}
}