To create a summation method where the result appears in the Edit text field

Asked

Viewed 997 times

0

I am creating an application and would like the result of the cost price operation plus profit percentage to appear in the sales price result and the latter cannot be edited at the time of saving the data. I ask you to be as specific as possible because I don’t have much experience. Thank you.

inserir a descrição da imagem aqui

 import android.app.Activity;
 import android.app.AlertDialog;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.os.Bundle;
 import android.text.Editable;
 import android.text.TextWatcher;
 import android.view.View;
 import android.widget.Button;
 import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.Toast;
 import br.gestaoBd.BancoDeDados.ProdutoDao;
 import br.gestaoBd.Beans.Produto;


 public class CadProdutos extends Activity {

private ImageView imgView = null;
static final int SALVAR = 0, EXCLUIR = 1, LIMPAR = 2;
EditText edId, edDescricao, edPrecoDeCusto, edPercDeLucro, edPrecoDeVenda;
ProdutoDao prodDao;
Produto produto;
ImageView imgFoto; 

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.cad_produtos);
    edId = (EditText) findViewById(R.id.cadEdId);
    edDescricao = (EditText) findViewById(R.id.cadEdDescricao);
    edPrecoDeCusto = (EditText) findViewById(R.id.cadEdPrecoDeCusto);
    edPrecoDeCusto.addTextChangedListener(new MonetaryMask(edPrecoDeCusto));
    edPercDeLucro = (EditText) findViewById(R.id.cadEdPercDeLucro);
    edPrecoDeVenda = (EditText) findViewById(R.id.cadEdPrecoDeVenda);
    edPrecoDeVenda.addTextChangedListener(new MonetaryMask(edPrecoDeVenda));

    imgView = (ImageView) findViewById(R.id.imgFoto);

    Produto produtoRecebido = (Produto) getIntent().getSerializableExtra("Produto");
    if (produtoRecebido != null) {
        montaTela(produtoRecebido);
    } else {
        montaTela(new Produto());
    }

    Button btn1Salvar = (Button) findViewById(R.id.btSalvar);
    btn1Salvar.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            Produto pro = new Produto();
            pro.setId(Integer.valueOf(edId.getText().toString()));
            pro.setDescricao(edDescricao.getText().toString());
            pro.setPrecoDeCusto(MonetaryMask.stringMonetarioToDouble(edPrecoDeCusto.getText().toString()));
            pro.setPercDeLucro(Double.valueOf(edPercDeLucro.getText().toString()));
            pro.setPrecoDeVenda(MonetaryMask.stringMonetarioToDouble(edPrecoDeVenda.getText().toString()));

            if (pro.getId() > 0) {
                getProDao().alterar(pro);
            } else {
                getProDao().inserirProduto(pro);
            }
            ToastManager.show(getBaseContext(), "Salvo com Sucesso",
                    ToastManager.INFORMATION);

        }
    });

    Button btnLimpar = (Button) findViewById(R.id.btLimpar);

    btnLimpar.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            montaTela(new Produto());
        }
    });

    Button bt2Excluir = (Button) findViewById(R.id.bt2Excluir);
    bt2Excluir.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            final Produto pro = new Produto();
            pro.setId(Integer.valueOf(edId.getText().toString()));
            pro.setDescricao(edDescricao.getText().toString());
            pro.setPrecoDeCusto(Double.valueOf(edPrecoDeCusto.getText().toString()));
            pro.setPercDeLucro(Double.valueOf(edPercDeLucro.getText().toString()));
            pro.setPrecoDeVenda(Double.valueOf(edPrecoDeVenda.getText().toString()));

            AlertDialog.Builder builder = new AlertDialog.Builder(CadProdutos.this);
            builder.setTitle("Deseja Excluir?");
            builder.setMessage("O produto será deletado!");

            builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {
                    getProDao().excluir(pro);
                    montaTela(new Produto());
                    ToastManager.show(getBaseContext(), "Produto Excluído",
                            ToastManager.INFORMATION);

                }

            });

            builder.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(CadProdutos.this, "Cancelado", Toast.LENGTH_LONG).show();
                }
            });

            AlertDialog alert = builder.create();
            alert.show();

        }
    });
}

private void montaTela(Produto produto) {
    edId.setText(String.valueOf(produto.getId()));
    edDescricao.setText(produto.getDescricao());
    edPrecoDeCusto.setText(String.valueOf(produto.getPrecoDeCusto()));
    edPercDeLucro.setText(String.valueOf(produto.getPercDeLucro()));
    edPrecoDeVenda.setText(String.valueOf(produto.getPrecoDeVenda()));


}

public ProdutoDao getProDao() {
    if (prodDao == null) {
        prodDao = new ProdutoDao();
    }
    return prodDao;
}

public void tirarFoto(View view) {
    Intent i = new Intent("android.media.action.IMAGE_CAPTURE");
    startActivityForResult(i, 0);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (data != null) {
        Bundle bundle = data.getExtras();

        if (bundle != null) {

            Bitmap bitmap = (Bitmap) bundle.get("data");


            imgView.setImageBitmap(bitmap);
        }
    }
  }
  }
  • This method would be called by click on a button or automatically when filling the other fields?

  • @ramaral The idea was to make automatic when filling the fields..

  • 1

    Search for Textwatcher.

1 answer

1


How do you use the TextWatcher to apply the mask, I suggest using the View.OnFocusChangeListener

Problem: It will only work when the user focuses on one of the fields!

Example of implementation:

OnFocusChangeListener focusListener = new View.OnFocusChangeListener() {

    public void onFocusChange(View v, boolean hasFocus) {
        if(!hasFocus)
        {
        // Aqui você pega os valores dos campos, realiza a soma e adiciona no no outro campo
        }
    }
};

edPrecoDeCusto.setOnFocusChangeListener(focusListener);
edPrecoDeCusto.setOnFocusChangeListener(focusListener);

Note: I won’t go into the merit of the calculation, just show how to implement the OnFocusChangeListener!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.