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
- ¿Ya no hay ningún indicador en el hilandero de Android 4.x?
- ¿Hay un AppCompat equivalente de Widget.Material.Spinner.Underlined?
- Android Spinner.setSelection () no funciona
- Uso correcto de un Spinner, siguiendo las directrices de diseño del material
- SetOnItemSelectedListener de Spinner no llama
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'
- ¿Cómo obtener el número de elementos en un spinner?
- Tema predeterminado de Spinner a EditarTexto android
- ¿Recuperando el elemento seleccionado de la hiladora?
- Falta la selección de elementos del centrifugador
- Spinner con texto largo no funciona bien
- Cómo configurar un spinner onClickListener () en Android
- ¿Cómo hacer una lista emergente como un hilandero sin el hilador en androide?
- Parche para Android - 9
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 enviar un JSONObject a un servicio REST?
- Implementación de Google Analytics V4 con sabores de producto