En este ejercicio de ejemplo que vamos a completar un poco más el anterior ejercicio que aquí publiqué sobre sumas y restas en Android. El objetivo de este nuevo ejercicio es poner a funcionar una calculadora utilizando el control visual Spinner.
El control Spinner muestra una lista de String y nos permite seleccionar uno de ellos. Cuando se lo selecciona se abre y muestra todos sus elementos para permitir seleccionar uno de ellos. Es una manera diferente de seleccionar las operaciones a realizar con los números que indiquemos. En este ejercicio no podremos realizar más de una operación de cada vez.
En este ejercicio realizaremos la carga de dos números en controles de tipo EditText. Se mostrará un mensaje que solicite la carga de los valores al usuario. Dispondremos de un control de tipo Spinner que permita seleccionar si queremos sumar, restar, multiplicar o dividir dichos valores. Finalmente mediante un control de tipo Button efectuamos la operación respectiva. Mostramos el resultado en un TextView.
En caso de que no se añada ningún número en los campos, se mostrará un mensaje avisando de ello.
Para realizar este ejercicio la estructura del proyecto será la misma que utilizamos en la versión de sumas y restas en Android, por lo que solo voy a mostrar el contenido del MainActivity.java. En caso de necesitar el resto del código, podéis consultarlo en el siguiente enlace.
Calculadora en Java utilizando el control visual Spinner
package ar.com.entreunosyceros.calculadoraspinner; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; public class MainActivity extends AppCompatActivity { //Definimos un objeto de la clase Spinner private Spinner spinner1; private EditText et1,et2; private TextView tv3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et1=(EditText)findViewById(R.id.et1); et2=(EditText)findViewById(R.id.et2); tv3=(TextView)findViewById(R.id.tv3); //En el método onCreate obtenemos la referencia al control visual declarado en el archivo XML spinner1 = (Spinner) findViewById(R.id.spinner); //Definimos un vector con la lista de String que mostrará el Spinner String []opciones={"sumar","restar","multiplicar","dividir"}; //Definimos y creamos un objeto de la clase ArrayAdapter ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, opciones); //llamamos al método setAdapter de la clase Spinner pasando la referencia del objeto de la clase ArrayAdapter spinner1.setAdapter(adapter); } //Este método se ejecutará cuando se presione el botón public void operar(View view) { String valor1 = et1.getText().toString(); String valor2 = et2.getText().toString(); if (valor1.isEmpty() || valor2.isEmpty()){ String resu = "Error. Alguno de los números están vacíos"; tv3.setText(resu); }else { int nro1 = Integer.parseInt(valor1); int nro2 = Integer.parseInt(valor2); //método operar que se ejecuta cuando presionamos el botón procedemos a //extraer el contenido seleccionado del control Spinner String selec = spinner1.getSelectedItem().toString(); //mediante una serie de if anidados verificamos si debemos sumar, restar, multiplicar o dividir if (selec.equals("sumar")) { int suma = nro1 + nro2; String resu = String.valueOf(suma); tv3.setText(resu); } else if (selec.equals("restar")) { int resta = nro1 - nro2; String resu = String.valueOf(resta); tv3.setText(resu); } else if (selec.equals("multiplicar")) { int multi = nro1 * nro2; String resu = String.valueOf(multi); tv3.setText(resu); } else if (selec.equals("dividir")) { //hacemos un cast de los números a float para poder tener decimales en el resultado float divi = (float)nro1 / (float)nro2; String resu = String.valueOf(divi); tv3.setText(resu); } } } }
2 Comentarios
Genial. Me ha venido muy bien para entender el funcionamiento del spinner. Gracias por compartir.
De nada. Gracias por la visita. Salu2.