Meus amigos, tenho um spinner que calcula desconto em % de 1 a 5. Como faço para calcular o desconto ao clicar no valor da porcentagem de desconto no spinner?
doubledesconto=0,novo_val=0;desconto=Double.parseDouble(ValorUnitario.getText().toString());switch(spnDesconto.getSelectedItemPosition()){case0:novo_val=desconto-(desconto*0.01);break;case1:novo_val=desconto-(desconto*0.02);break;case2:novo_val=desconto-(desconto*0.03);break;case3:novo_val=desconto-(desconto*0.04);break;case4:novo_val=desconto-(desconto*0.05);break;}AlertDialog.Builderdialogo=newAlertDialog.Builder(Vendas.this);dialogo.setTitle("Novo Valor");dialogo.setMessage("O valor com desconto é: R$ "+String.valueOf(novo_val));dialogo.setNeutralButton("OK",null);dialogo.show();
Coloque o seu trecho de código dentro do Listener abaixo
spnDesconto.setOnItemSelectedListener(newOnItemSelectedListener(){publicvoidonItemSelected(AdapterView<?>parent,Viewview,intposition,longid){// Seu código aqui}publicvoidonNothingSelected(AdapterView<?>parent){// Nenhuma opção selecionada}});}
O ideal é colocar esse trecho de código acima, após o "spnDesconto.setAdapter(adapter)" que você deve ter no seu código.
F
fbrigatt
ok, obrigado pelo retorno. Vou testar.
F
fbrigatt
Fiz assim e deu esse erro:
spnDesconto.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){@OverridepublicvoidonItemSelected(AdapterView<?>arg0,Viewarg1,intarg2,longarg3){doubledesconto=0,novo_val=0;desconto=Double.parseDouble(ValorUnitario.getText().toString());switch(spnDesconto.getSelectedItemPosition()){case0:novo_val=desconto-(desconto*0.01);break;case1:novo_val=desconto-(desconto*0.02);break;case2:novo_val=desconto-(desconto*0.03);break;case3:novo_val=desconto-(desconto*0.04);break;case4:novo_val=desconto-(desconto*0.05);break;}AlertDialog.Builderdialogo=newAlertDialog.Builder(Vendas.this);dialogo.setTitle("Novo Valor");dialogo.setMessage("O valor com desconto é: R$ "+String.valueOf(novo_val));dialogo.setNeutralButton("OK",null);dialogo.show();}@OverridepublicvoidonNothingSelected(AdapterView<?>arg0){// TODO Auto-generated method stub}});
08-29 18:47:47.363: E/AndroidRuntime(340): FATAL EXCEPTION: main
08-29 18:47:47.363: E/AndroidRuntime(340): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.br.aquavendas/com.br.aquavendas.Vendas}: java.lang.NumberFormatException:
L
lucasb.aquino
Em qual linha o erro indicado?
O erro indica que o número que você tá passando não é válido, isso pode acontecer quando você tenta colocar dentro de uma variável um valor maior que o suportado.
F
fbrigatt
O estranho é que está funcionando.
F
fbrigatt
O erro acima citado foi solucionado.
Como que deixo com duas casas depois do ponto?
Tipo: R$ xx.xx
Resolvido a duvida das duas casas decimais
String valor = String.format("%.2f", novo_val);
ValorDesconto.setText(String.valueOf(valor));
Mais uma dúvida, gostaria que não calculasse logo que mostrasse a tela, está calculando com 1%, queria que mostrasse o valor normal sem desconto.
F
fbrigatt
Alguém?
L
lucasb.aquino
Poste o código do seu método onCreate();
F
fbrigatt
Segue onCreate
publicclassVendasextendsActivity{// Início da Classe CadastrarClienteprivatestaticfinalString[]desconto={"0%","1%","2%","3%","4%","5%"};ArrayAdapter<String>aDesconto;SpinnerspnDesconto;privatelongmId;// private EditText Nome, Placa, Modelo;privateTextViewIdCodigoCliente,NomeCliente,IdProduto,NomeProduto,DataVenda,ValorUnitario,ValorDesconto;privateImageButtonsalvar,pesquisar,limpar,voltar;privateButtonProdutos;privateDbAdaptermDb;@OverrideprotectedvoidonCreate(Bundleicicle){// Início do método onCreatesuper.onCreate(icicle);setContentView(R.layout.vendas);mDb=newDbAdapter(this);mId=getIntent().getLongExtra(DbAdapter.KEY_IDCLI,0);Log.d("CadastrarCarro","O mId é: "+mId);//aqui mId=getIntent().getLongExtra(DbAdapter.KEY_IDPRO,0);Log.d("CadastrarCarro","O mId é: "+mId);//aqui IdCodigoCliente=(TextView)findViewById(R.id.IdCliente);NomeCliente=(TextView)findViewById(R.id.lblNomeCliente);DataVenda=(TextView)findViewById(R.id.lblDataVenda);IdProduto=(TextView)findViewById(R.id.IdProduto);NomeProduto=(TextView)findViewById(R.id.lblNomeProduto);ValorUnitario=(TextView)findViewById(R.id.lblValor);spnDesconto=(Spinner)findViewById(R.id.spnDesconto);ValorDesconto=(TextView)findViewById(R.id.lblValorDesconto);aDesconto=newArrayAdapter<String>(this,android.R.layout.simple_spinner_item,desconto);spnDesconto.setAdapter(aDesconto);SimpleDateFormatsimpleFormat=newSimpleDateFormat("dd/MM/yyyy");// Log.w("Data Atual", simpleFormat.format( new Date( System.currentTimeMillis() ) );DataVenda.setText(simpleFormat.format(newDate(System.currentTimeMillis())));mDb.open();Cursorcliente=mDb.getCliente(mId);Cursorproduto=mDb.getProduto(mId);if(mId>0&&cliente.moveToFirst()){IdCodigoCliente.setText(cliente.getString(cliente.getColumnIndex(DbAdapter.KEY_IDCLI)));//cliente.close();Log.d("CarrosCliente","mId: "+mId);// e aqui NomeCliente.setText(cliente.getString(cliente.getColumnIndex(DbAdapter.KEY_RAZAOSOCIALNOME)));}// PRODUTOif(mId>0&&produto.moveToFirst()){IdProduto.setText(produto.getString(produto.getColumnIndex(DbAdapter.KEY_IDPRO)));// produto.close();Log.d("CarrosCliente","mId: "+mId);// e aqui NomeProduto.setText(produto.getString(produto.getColumnIndex(DbAdapter.KEY_PRODUTO)));ValorUnitario.setText(produto.getString(produto.getColumnIndex(DbAdapter.KEY_VALORUNITARIO)));}spnDesconto.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){@OverridepublicvoidonItemSelected(AdapterView<?>arg0,Viewarg1,intarg2,longarg3){doubledesconto=0,novo_val=0;desconto=Double.parseDouble(ValorUnitario.getText().toString());switch(spnDesconto.getSelectedItemPosition()){case0:novo_val=desconto-(desconto*0.00);break;case1:novo_val=desconto-(desconto*0.01);break;case2:novo_val=desconto-(desconto*0.02);break;case3:novo_val=desconto-(desconto*0.03);break;case4:novo_val=desconto-(desconto*0.04);break;case5:novo_val=desconto-(desconto*0.05);break;}Stringvalor=String.format("%.2f",novo_val);ValorDesconto.setText(String.valueOf(valor));/* AlertDialog.Builder dialogo = new AlertDialog.Builder(Vendas.this); dialogo.setTitle("Novo Valor"); dialogo.setMessage("O valor com desconto é: R$ " + String.valueOf(novo_val)); dialogo.setNeutralButton("OK", null); dialogo.show(); */}@OverridepublicvoidonNothingSelected(AdapterView<?>arg0){// TODO Auto-generated method stub}});Produtos=(Button)findViewById(R.id.btnProduto);Produtos.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){Intentintent=newIntent(Vendas.this,ListaProdutos.class);intent.putExtra("itemMenu","3 - Listar Produtos");startActivity(intent);// Intent intent = new Intent(Vendas.this, ListaProdutos.class); // startActivity(intent); // startActivity(new Intent(Vendas.this,ListaProdutos.class));}});}// Fim do método onCreate
F
fbrigatt
Teria algum jeito melhor pra fazer isso? Está dando erro quando vai setar o resultado no textview. Uma outra coisa que está acontecendo é que quando entra na tela já está calculando o desconto com 1%, tive que colocar o valor 0% no array para não calcular.
F
fbrigatt
Alguém poderia me ajudar a fazer o cálculo de desconto em % utilizando um spinner? Seto um textview com um valor e gostaria que ao clicar no spinner, fizesse o cálculo de acordo com a % escolhida.
F
fbrigatt
A Classe está assim:
packagecom.br.aquavendas;importjava.text.SimpleDateFormat;importjava.util.Date;importcom.br.aquavendas.banco.DbAdapter;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.content.Intent;importandroid.database.Cursor;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.Menu;importandroid.view.MenuInflater;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.AdapterView;importandroid.widget.ArrayAdapter;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.ImageButton;importandroid.widget.Spinner;importandroid.widget.TextView;publicclassVendasextendsActivity{// Início da Classe CadastrarClienteprivatestaticfinalString[]desconto={"0%","1%","2%","3%","4%","5%"};ArrayAdapter<String>aDesconto;// Spinner spnDesconto;privatelongmId;// private EditText Nome, Placa, Modelo;privateTextViewIdCodigoCliente,NomeCliente,IdProduto,NomeProduto,DataVenda,ValorUnitario,ValorDesconto;privateImageButtonsalvar,pesquisar,limpar,voltar;privateButtonProdutos,Clientes;privateDbAdaptermDb;@OverrideprotectedvoidonCreate(Bundleicicle){// Início do método onCreatesuper.onCreate(icicle);setContentView(R.layout.vendas);mDb=newDbAdapter(this);mId=getIntent().getLongExtra(DbAdapter.KEY_IDCLI,0);Log.d("CadastrarCarro","O mId é: "+mId);//aqui mId=getIntent().getLongExtra(DbAdapter.KEY_IDPRO,0);Log.d("CadastrarCarro","O mId é: "+mId);//aqui IdCodigoCliente=(TextView)findViewById(R.id.IdCliente);NomeCliente=(TextView)findViewById(R.id.lblNomeCliente);DataVenda=(TextView)findViewById(R.id.lblDataVenda);IdProduto=(TextView)findViewById(R.id.IdProduto);NomeProduto=(TextView)findViewById(R.id.lblNomeProduto);ValorUnitario=(TextView)findViewById(R.id.lblValor);// spnDesconto = (Spinner) findViewById(R.id.spnDesconto);ValorDesconto=(TextView)findViewById(R.id.lblValorDesconto);aDesconto=newArrayAdapter<String>(this,android.R.layout.simple_spinner_item,desconto);// spnDesconto.setAdapter(aDesconto);SimpleDateFormatsimpleFormat=newSimpleDateFormat("dd/MM/yyyy");// Log.w("Data Atual", simpleFormat.format( new Date( System.currentTimeMillis() ) );DataVenda.setText(simpleFormat.format(newDate(System.currentTimeMillis())));mDb.open();Cursorcliente=mDb.getCliente(mId);Cursorproduto=mDb.getProduto(mId);if(mId>0&&cliente.moveToFirst()){IdCodigoCliente.setText(cliente.getString(cliente.getColumnIndex(DbAdapter.KEY_IDCLI)));//cliente.close();Log.d("CarrosCliente","mId: "+mId);// e aqui NomeCliente.setText(cliente.getString(cliente.getColumnIndex(DbAdapter.KEY_RAZAOSOCIALNOME)));cliente.close();}// PRODUTOif(mId>0&&produto.moveToFirst()){IdProduto.setText(produto.getString(produto.getColumnIndex(DbAdapter.KEY_IDPRO)));// produto.close();Log.d("CarrosCliente","mId: "+mId);// e aqui NomeProduto.setText(produto.getString(produto.getColumnIndex(DbAdapter.KEY_PRODUTO)));ValorUnitario.setText(produto.getString(produto.getColumnIndex(DbAdapter.KEY_VALORUNITARIO)));produto.close();}/* spnDesconto.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { double desconto = 0, novo_val = 0; desconto = Double.parseDouble(ValorUnitario.getText().toString()); switch(spnDesconto.getSelectedItemPosition()){ case 0: novo_val = desconto - (desconto * 0.00);break; case 1: novo_val = desconto - (desconto * 0.01);break; case 2: novo_val = desconto - (desconto * 0.02);break; case 3: novo_val = desconto - (desconto * 0.03);break; case 4: novo_val = desconto - (desconto * 0.04);break; case 5: novo_val = desconto - (desconto * 0.05);break; } String valor = String.format("%.2f", novo_val); ValorDesconto.setText(String.valueOf(valor)); } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); */Clientes=(Button)findViewById(R.id.btnClientes);Clientes.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){Intentintent=newIntent(Vendas.this,Lista.class);intent.putExtra("itemMenu","2 - Listar Clientes");startActivity(intent);}});Produtos=(Button)findViewById(R.id.btnProduto);Produtos.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){Intentintent=newIntent(Vendas.this,ListaProdutos.class);intent.putExtra("itemMenu","3 - Listar Produtos");startActivity(intent);}});}// Fim do método onCreatepublicvoidmensagemExibir(Stringtitulo,Stringtexto){AlertDialog.Buildermensagem=newAlertDialog.Builder(Vendas.this);mensagem.setTitle(titulo);mensagem.setMessage(texto);mensagem.setNeutralButton("Ok",null);mensagem.show();}}// Fim da Classe CadastrarClientes