GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Cadastro android exibindo valores errados

programação
android
Tags: #<Tag:0x00007fb3cc5cb688> #<Tag:0x00007fb3cc5cb2f0>

#1

Boa Tarde! Estou com um problema nesse código de um aplicativo que estou fazendo para a faculdade. É o seguinte na Activity de Lançamento (cadastro) tem: descrição, data, valor, tipo. Tem também o textView que mostra a somas do valores inclusos numa Listview. O que acorre é que quando insiro valores ele faz a soma errada,Ex: Eu cadastro um produto no valor de 10 reais e outro no mesmo valor e, a soma dá 30 ao invés de 20, ai se volto e entro de novo, o valor mostrado está correto 20, outro problema é que quando deleto da lista o cadastro some, porem o valor continua fixo lá, ai se você sai e volta ele apaga. Segue o código abaixo, se alguém puder ajudar ficarei agradecido.

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Collections;

public class CreditosActivity extends AppCompatActivity {

private ArrayList<Lancamentos> lista = new ArrayList<Lancamentos>();
private ArrayAdapter<Lancamentos> adapter;
private DAO dao;
private Lancamentos lancamentosSelecionado;
private int posicaoAlteracao;
private float TotalDeCredito=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_creditos);

    TextView totalC = (TextView)findViewById(R.id.textView4);
    dao=new DAO(this);
    lista=dao.listarLancamentosCreditos();
    for(int i=0;i<lista.size();i++){
        TotalDeCredito+=lista.get(i).getValor();
    }
    Toast.makeText(this,"Total de credito: "+TotalDeCredito,Toast.LENGTH_LONG).show();
    totalC.setText(String.valueOf(TotalDeCredito));

    adapter = new ArrayAdapter<Lancamentos>(this,android.R.layout.simple_list_item_checked,lista);
    final ListView listView = (ListView)findViewById(R.id.lvCreditos);
    listView.setAdapter(adapter);

    listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long id) {
            CheckBox cbAlterar= (CheckBox)findViewById(R.id.cbAlterar);
            CheckBox cbExcluir= (CheckBox)findViewById(R.id.cbExcluir);
            EditText edtDescricao= (EditText)findViewById(R.id.edtDescricao);
            EditText edtValor= (EditText)findViewById(R.id.edtValor);
            EditText edtData= (EditText)findViewById(R.id.edtData);
            lancamentosSelecionado=lista.get(position);

            if(cbExcluir.isChecked()&&!cbAlterar.isChecked()){
                if(dao.excluirLancamentos(lancamentosSelecionado)){
                    dao.excluirLancamentos(lancamentosSelecionado);
                    adapter.notifyDataSetChanged();
                    lista.remove(lancamentosSelecionado);
                    adapter.notifyDataSetChanged();
                }
                return false;
            }
            else{
                if(!cbExcluir.isChecked()&&cbAlterar.isChecked()){
                    posicaoAlteracao=position;
                    Button botao=(Button)findViewById(R.id.btnAdicionar);
                    lancamentosSelecionado.setTipo("C");
                    edtDescricao.setText(lancamentosSelecionado.getDescricao());
                    edtData.setText(lancamentosSelecionado.getData());
                    edtValor.setText(String.valueOf(lancamentosSelecionado.getValor()));
                    botao.setText("Alterar");
                    edtDescricao.requestFocus();
                    lancamentosSelecionado=lista.get(position);
                }
                return true;
            }
        }
    });
}

public void AdicionarCreditos(View view){
    EditText edtDescricao = (EditText)findViewById(R.id.edtDescricao);
    EditText edtValor = (EditText)findViewById(R.id.edtValor);
    EditText edtData = (EditText)findViewById(R.id.edtData);
    adapter = new ArrayAdapter<Lancamentos>(this,android.R.layout.simple_list_item_checked,lista);
    final ListView listView = (ListView)findViewById(R.id.lvCreditos);
    listView.setAdapter(adapter);
    TextView totalC = (TextView)findViewById(R.id.textView4);

    edtDescricao.requestFocus();
    Button botao1 = (Button)findViewById(R.id.btnAdicionar);

    if(botao1.getText().toString().equals("Adicionar")){
        Lancamentos l = new Lancamentos();
        if(!l.setDescricao(edtDescricao.getText().toString())){
            Toast.makeText(this,"Preencha os campos", Toast.LENGTH_LONG).show();
            return;
        }
        if(!l.setValor(Float.parseFloat(edtValor.getText().toString()))){
            Toast.makeText(this,"Informe um valor",Toast.LENGTH_LONG).show();
            return;
        }
        l.setData(edtData.getText().toString());
        l.setTipo("C");

        lista.add(l);
        Collections.sort(lista);
        adapter.notifyDataSetChanged();
        dao.incluirLancamentos(l);
        lista=dao.listarLancamentosCreditos();
        edtDescricao.setText("");
        edtData.setText("");
        edtValor.setText("");
        edtDescricao.requestFocus();
        Toast.makeText(this,"Credito adicionado com sucesso.",Toast.LENGTH_LONG).show();
        for(int i=0;i<lista.size();i++){
            TotalDeCredito+=lista.get(i).getValor();
        }
        Toast.makeText(this,"Total de credito: "+TotalDeCredito,Toast.LENGTH_LONG).show();
        totalC.setText(String.valueOf(TotalDeCredito));
    }
    else{
        if(botao1.getText().toString().equals("Alterar")){
            lancamentosSelecionado.setDescricao(edtDescricao.getText().toString());
            lancamentosSelecionado.setData(edtData.getText().toString());
            lancamentosSelecionado.setValor(Float.parseFloat(edtValor.getText().toString()));
            lancamentosSelecionado.setTipo("D");
            dao.alterarLancamentos(lancamentosSelecionado);
            lista.set(posicaoAlteracao,lancamentosSelecionado);
            lista=dao.listarLancamentosCreditos();
            adapter.notifyDataSetChanged();
            Toast.makeText(this,"Credito alterado com sucesso.",Toast.LENGTH_LONG).show();
            botao1.setText("Adicionar");
        }
    }
}

}