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");
}
}
}
}