Llame al valor de un spinner? Además, utilice otros valores basados ​​en el valor de un spinner

Tengo una "abertura" del hilandero instalada con una lista de números, y un "modo" del hilandero con dos opciones. Cuando se pulsa un botón necesito un cálculo para ejecutar usando varias entradas, incluyendo la selección actual de 'apertura' y un valor derivado de 'modo'. ¿Cómo puedo llamar al valor de un spinner para que pueda usarlo en un cálculo?

Además, ¿cómo utilizo la selección del modo spinner para establecer este otro valor antes de implimentarlo en el cálculo? Para ser más específico, si la hiladora está establecida en Pequeña entonces el valor que utilizo en el cálculo es 0.015, mientras que si Large está seleccionado necesito usar 0.028

Mis otras entradas son vistas de EditText, así que ahora mismo estoy configurado de esta manera:

input = (EditText) findViewById(R.id.input1); input2 = (EditText) findViewById(R.id.input2); input3 = (EditText) findViewById(R.id.input3); input4 = (EditText) findViewById(R.id.input4); output = (TextView) findViewById(R.id.result); output2 = (TextView) findViewById(R.id.result2); //aperture dropdown Spinner s = (Spinner) findViewById(R.id.apt); ArrayAdapter adapter2 = ArrayAdapter.createFromResource( this, R.array.apertures, android.R.layout.simple_spinner_item); adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); s.setAdapter(adapter2); //button final Button button = (Button) findViewById(R.id.calculate); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Perform action on click doCalculation(); } }); } private void doCalculation() { // Get entered input value String strValue = input.getText().toString(); String strValue2 = input2.getText().toString(); String strValue3 = input3.getText().toString(); String strValue4 = input4.getText().toString(); // Perform a hard-coded calculation double imperial1 = (Double.parseDouble(strValue3) + (Double.parseDouble(strValue4) / 12)); double number = Integer.parseInt(strValue) * 2; double number2 = ((number / 20) + 3) / Integer.parseInt(strValue2); // Update the UI with the result output.setText("Result: "+ number); output2.setText("Result2: "+ imperial1); } } 

Ésa no es la ecuación real, es apenas una prueba para cerciorarse de que todo conecte correctamente. ¿Cómo llamaría el valor de spinner 'apertura' y el pequeño / gran spinner 'modo'

Para obtener el valor de la ruleta llame a uno de los siguientes como sea apropiado:

 Object item = spinner.getSelectedItem(); long id = spinner.getSelectedItemId(); int position = getSelectedItemPosition(); View selectedView = getSelectedView(); 

En su caso, podría declarar la ruleta como final y pasar el elemento seleccionado al método doCalculations () de la siguiente manera:

  final Spinner aptSpinner = (Spinner) findViewById(R.id.apt); ... //button final Button button = (Button) findViewById(R.id.calculate); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Perform action on click doCalculation(aptSpinner.getSelectedItem()); } }); } private void doCalculation(Object selectedItem) { ... } 

Probablemente sería bueno para usted para recoger un libro básico de Java y aprender cómo el alcance en Java funciona.

¿Por qué no llenar su ArrayAdapter de forma programática con objetos de un tipo conocido y utilizarlo. He escrito un tutorial de naturaleza similar (enlace en la parte inferior) que hace esto. La premisa básica es crear un array de objetos Java, decirle al spinner sobre el, y luego usar esos objetos directamente de la clase spinner. En mi ejemplo tengo un objeto que representa un "Estado" que se define como sigue:

paquete com.katr.spinnerdemo;

clase pública {

 // Okay, full acknowledgment that public members are not a good idea, however // this is a Spinner demo not an exercise in java best practices. public int id = 0; public String name = ""; public String abbrev = ""; // A simple constructor for populating our member variables for this tutorial. public State( int _id, String _name, String _abbrev ) { id = _id; name = _name; abbrev = _abbrev; } // The toString method is extremely important to making this class work with a Spinner // (or ListView) object because this is the method called when it is trying to represent // this object within the control. If you do not have a toString() method, you WILL // get an exception. public String toString() { return( name + " (" + abbrev + ")" ); } } 

A continuación, puede rellenar una ruleta con una matriz de estas clases de la siguiente manera:

  // Step 1: Locate our spinner control and save it to the class for convenience // You could get it every time, I'm just being lazy... :-) spinner = (Spinner)this.findViewById(R.id.Spinner01); // Step 2: Create and fill an ArrayAdapter with a bunch of "State" objects ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, new State[] { new State( 1, "Minnesota", "MN" ), new State( 99, "Wisconsin", "WI" ), new State( 53, "Utah", "UT" ), new State( 153, "Texas", "TX" ) }); // Step 3: Tell the spinner about our adapter spinner.setAdapter(spinnerArrayAdapter); 

Puede recuperar el elemento seleccionado de la siguiente manera:

 State st = (State)spinner.getSelectedItem(); 

Y ahora tienes una clase de jona de bonafied con la que trabajar. Si desea interceptar cuando cambia el valor de la hiladora, simplemente implemente OnItemSelectedListener y agregue los métodos apropiados para manejar los eventos.

 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // Get the currently selected State object from the spinner State st = (State)spinner.getSelectedItem(); // Now do something with it. } public void onNothingSelected(AdapterView<?> parent ) { } 

Puede encontrar el tutorial completo aquí: http://www.katr.com/article_android_spinner01.php

Si R.array.apertures es una matriz de cadenas, puede utilizar

 Object item = spinner.getSelectedItem(); if(item != null) { String SelectedString = item.toString(); } 

Si es cualquier otro objeto decir Persona.

entonces

 if(item != null) { Person SelectedString = (Person) item; } 
  • Cómo configurar el elemento seleccionado en MvxSpinner
  • Agregar OnItemSelectedListener a Spinner
  • Cómo cambiar el color del texto del hilandero
  • ¿Cómo podemos crear hilanderos similares a iPhone en android?
  • IndexOutOfBounds en Spinner?
  • Spinner con sub-spinner no funciona como se esperaba
  • ¿Qué atributo de estilo tiene que ser cambiado para spinner dropdownitem?
  • ¿Cómo puedo utilizar spinner setOnItemLongClickListener
  • Actionbarsherlock IcsSpinner - el ancho siempre se ajusta a los elementos más amplios
  • Actualizar City Spinner con notifyDataSetChanged después de seleccionar estado
  • Creación de un menú desplegable desde un archivo .json
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.