Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Função Calcula carrinho

Boa noite Alex Estou colocado em pratica os conhecimentos obtidos nas aulas, fazendo um aplicativo que adiciona produtos e calcula o preço junto com a sua quantidade.

O usuario digita o preço a quantidade de produtos e ele calcula o total do carrinho de acordo que ele vai adicionando mais produtos.

Eu estava tentando usar o mesmo raciocínio das suas aulas. Criei um resumoView que ficara responsavel por mandar o total do carrinho no meu textView na tela de total de carrinho.

E criei a classe resumo, que ficaria resposavel por fazer o calculo.

Eu agarrei na parte do calculo.

Minha classe Resumo()

package projetos.android.mercadinhokotlin.Model

import java.math.BigDecimal

//Classe que fica responsavel para calculoos
class Resumo(private val produtos: List<Produto>) {

    fun total(): BigDecimal {
        return calculaCarrinho()
    }

    private fun calculaCarrinho(): BigDecimal {

        val somaOsValoresDoProduto = produtos
            .sumByDouble { it.preco.toDouble() * it.quantidade }
        return BigDecimal(somaOsValoresDoProduto)
    }
}

funciona essa questão do sumByDouble? Produto vezes a quantidade?

Classe ResumoView - responsavel por colocar os resultados dos calculos nos componentes da tela

class ResumoView(private val context: Context,
                 private val view: View,
                 produtos :List<Produto>) {

    private val resumo :Resumo = Resumo(produtos)
    private val corTotalCarrinho = ContextCompat.getColor(context, R.color.colorPrimaryDark)

    fun atualiza(){
        adicionaCarrinho()
    }

    private fun adicionaCarrinho() {

        val carrinho = resumo.total()

        with(view.valor_do_carrinho){
            setTextColor(corTotalCarrinho)
            text = carrinho.formataParaBrasileiro()
        }
    }
}

Esta ok professor:

Preciso muito do seu feedback para ver se estou no caminho certo. Obrigado Fico no aguardo

2 respostas
solução!

Fala Daniel, tudo bem ?

Cara, em tese está certinho isso que está fazendo.

O ponto é que são BigDecimal, o correto seria fazer algo assim:

private fun calculaCarrinho(): BigDecimal {

        val somaOsValoresDoProduto = produtos
            .sumByDouble { it.preco.multiply(it.quantidade) }
        return BigDecimal(somaOsValoresDoProduto)
    }

Tudo bem Matheus Show de bola meu caro, muito obrigado =)