Problema con spinner

234 views
Skip to first unread message

Yaiza García

unread,
Nov 9, 2015, 3:00:06 PM11/9/15
to desarrolladores-android
Hola, necesito obtener la posición del item seleccionado en un spinner al pulsar un boton.
el código que tengo es el siguiente, pero siempre me devuelve 0 para pos1 y pos2

XML

<EditText
 
android:layout_width="wrap_content"
 
android:layout_height="50dp"
 
android:id="@+id/editText2"
 
android:inputType="numberDecimal"
 
android:layout_below="@+id/spinner2"
 
android:layout_alignParentRight="true"
 
android:layout_alignParentEnd="true"
 
android:layout_alignParentLeft="true"
 
android:layout_alignParentStart="true"
 
android:layout_marginTop="10dp" />

<TextView
 
android:layout_width="wrap_content"
 
android:layout_height="100dp"
 
android:id="@+id/textView6"
 
android:textSize="30dp"
 
android:layout_below="@+id/button"
 
android:layout_alignParentRight="true"
 
android:layout_alignParentEnd="true"
 
android:layout_alignParentLeft="true"
 
android:layout_alignParentStart="true"
 
android:layout_marginTop="10dp" />

<TextView
 
android:layout_width="wrap_content"
 
android:layout_height="50dp"
 
android:text="@string/convertirde"
 
android:id="@+id/textView4"
 
android:textSize="20dp"
 
android:layout_above="@+id/spinner2"
 
android:layout_alignParentLeft="true"
 
android:layout_alignParentStart="true"
 
android:gravity="center_vertical" />

<Spinner
 
android:layout_width="wrap_content"
 
android:layout_height="50dp"
 
android:id="@+id/spinner1"
 
android:layout_alignParentTop="true"
 
android:layout_toRightOf="@+id/textView4"
 
android:layout_toEndOf="@+id/textView4"
 
android:layout_marginTop="10dp"
 
android:gravity="center_vertical" />

<TextView
 
android:layout_width="wrap_content"
 
android:layout_height="50dp"
 
android:text="@string/a"
 
android:id="@+id/textView5"
 
android:textSize="25dp"
 
android:layout_alignTop="@+id/spinner2"
 
android:layout_alignParentLeft="true"
 
android:layout_alignParentStart="true"
 
android:gravity="center_vertical" />

<Spinner
 
android:layout_width="wrap_content"
 
android:layout_height="50dp"
 
android:id="@+id/spinner2"
 
android:layout_below="@+id/spinner1"
 
android:layout_alignLeft="@+id/spinner1"
 
android:layout_alignStart="@+id/spinner1"
 
android:layout_marginTop="10dp"
 
android:gravity="center_vertical" />


<Button
 
android:layout_width="wrap_content"
 
android:layout_height="wrap_content"
 
android:text="@string/convertir"
 
android:id="@+id/button"
 
android:layout_below="@+id/editText2"
 
android:layout_alignParentLeft="true"
 
android:layout_alignParentStart="true"
 
android:layout_alignRight="@+id/editText2"
 
android:layout_alignEnd="@+id/editText2"
 
android:layout_marginTop="10dp" />



JAVA

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import java.text.DecimalFormat;
public class Conversor extends ActionBarActivity {
 
TextView result;
 
EditText et;
 
Spinner sp1,sp2;
 
Button bt;
 
DecimalFormat resultado= new DecimalFormat("0.000");
 
Double v1, v2;
 
String valor1 = "1", valor2 = "1",convertir;
 
String monedas[] = {"SUO", "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF","PLN", "RON", "SEK", "CHF", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD","CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR"};
 
String divisas[]={"- Seleccione una opcion -","Euros","Dolares Americanos","Yenes Japoneses","Levas Bulgaras","Coronas Checas","Coronas Danesas","Libras Esterlinas","Florines Hungaros","Zlotys Polacos","Leus Rumanos", "Coronas Suecas","Francos Suizos","Coronas Noruegas","Kunas Croatas","Rublos Rusos","Nuevas Lyras Turcas", "Dolares Australianos","Reales Brasileños","Dolares Canadienses","Yuanes Chinos","Dolares de Honk Kong", "Rupias Indonesias","Nuevos Shekeles Israelis","Rupias Indias","Wons Surcoreanos","Pesos Megicanos", "Ringgits Malasios","Dolares Neozelandes","Pesos Filipinos","Dolares de Singapur","Baths Tailandeses","Rands Sudafricanos"};
int pos1,pos2;
@Override
protected void onCreate(Bundle savedInstanceState){
 
super.onCreate(savedInstanceState);
 setContentView
(R.layout.activity_conversor);
 et
=(EditText)findViewById(R.id.editText2);
 result
=(TextView)findViewById(R.id.textView6);
 sp1
=(Spinner)findViewById(R.id.spinner1);
 sp2
=(Spinner)findViewById(R.id.spinner2);
 bt
=(Button)findViewById(R.id.button);
 
ArrayAdapter adapter = new ArrayAdapter<>(this,android.R.layout.simple_spinner_dropdown_item, divisas);
 sp1
.setAdapter(adapter);
 sp2
.setAdapter(adapter);
 pos1
=sp1.getSelectedItemPosition();
 pos2
=sp2.getSelectedItemPosition();
 convertir
=et.getText().toString();
 
System.out.println(pos1+" - "+pos2);
 bt
.setOnClickListener(new View.OnClickListener(){
 
public void onClick(View v){
 
if(pos1==0||pos2==0){
 
//alert.dialog seleccione una moneda
 
new AlertDialog.Builder(Conversor.this)
 
.setTitle("ERROR")
 
.setMessage("Seleccion una opción válida por favor.")
 
.setPositiveButton("OK",new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
 
}
 
})
 
.setIcon(android.R.drawable.ic_dialog_alert)
 
.show();
 
}else if(convertir==""){
 
//alert.dialog introduzca un valor para la conversion
 
new AlertDialog.Builder(Conversor.this)
 
.setTitle("ERROR")
 
.setMessage("Introduzca un valor válido para la conversión por favor.")
 
.setPositiveButton("OK",new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
 
}
 
})
 
.setIcon(android.R.drawable.ic_dialog_alert)
 
.show();
 
}else if(pos1==pos2){
 
//alet.dialog ha seleccionado la misma divisa
 
new AlertDialog.Builder(Conversor.this)
 
.setTitle("ERROR")
 
.setMessage("Seleccion dos divisas distintas por favor.")
 
.setPositiveButton("OK",new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
 
}
 
})
 
.setIcon(android.R.drawable.ic_dialog_alert)
 
.show();
 
}
 
else {
 
//conversor
 
}
 
}
 
});
}

Si pudieseis ayudarme a solucionarlo os lo agradecería, por que no se que he hecho mal.

Jeobel Muñoz

unread,
Nov 9, 2015, 3:24:40 PM11/9/15
to desarrollad...@googlegroups.com
proba este ejemplo :

String selec=spinner1.getSelectedItem().toString();
el proyecto esta en el sitio:
http://www.javaya.com.ar/androidya/detalleconcepto.php?codigo=137&inicio=0






--
Para participar es necesario que leas detenidamente las normas del grupo: http://goo.gl/8h8ez2
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/desarrolladores-android.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/desarrolladores-android/14487e39-fbfc-42b8-8661-4b6479a2ed0c%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Jeobel Muñoz

unread,
Nov 9, 2015, 3:27:12 PM11/9/15
to desarrollad...@googlegroups.com

Yaiza García

unread,
Nov 10, 2015, 10:46:04 AM11/10/15
to desarrolladores-android
Hola, lo que has puesto me sirve para solucionar parte del problema, pero sigo necesitando saber la posición del item seleccionado en el spinner, no el item en sí, necesito la posicion del item dentro del array.

de todos modos grcias :)
...

Eduardo Martin Cabrera

unread,
Nov 11, 2015, 9:41:42 AM11/11/15
to desarrollad...@googlegroups.com
entonces lo que buscas debe ser:
sp1.getSelectedItemPosition();
sp2.getSelectedItemPosition();

revisa la documentacion de http://developer.android.com/intl/es/reference/android/widget/AdapterView.html#getSelectedItemPosition()

recorda que la primer posicion es 0, si no hay nada seleccionado te devuelve INVALID_POSITION (-1)

y vos estas comparando contra el primer elemento (posicion 0) en vez de INVALID_POSITION
ademas te faltaria volver a obtener el valor de las tales posiciones en el listener del click del boton, actualmente solo las estas asignado una sola vez en el onCreate y no las estas obteniendo en el bloque del click del boton

Reply all
Reply to author
Forward
This conversation is locked
You cannot reply and perform actions on locked conversations.
0 new messages