2011-02-24 30 views
6

Esto es probablemente una cosa simple y directa para algunos.Android - Establecer punto de inicio de Spinner

tengo este código ...

SQLiteDatabase db = dbs.getReadableDatabase(); 
String SQL = "SELECT * FROM Table"; 
final Cursor cursor = db.rawQuery(SQL, null); 
    array_spinner1[0] = "Select:"; 
    while (cursor.moveToNext()) { 
     array_spinner1[i]= cursor.getString(1) + " - " + cursor.getString(2); 
     i ++; 
    } 
    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,     android.R.layout.simple_spinner_item, array_spinner1); 
    s1.setAdapter(adapter); 

que rellenar la matriz y todo funciona muy bien. Sin embargo, quiero comenzar la posición de la ruleta no en el primer elemento (Seleccionar). Quiero que comience donde el elemento en el cursor = 'aquí', por ejemplo. Espero que tenga sentido?

Para ponerlo en contexto en 'Tabla', la columna 1 tiene un rango de edad y la columna 2 tiene un rango de edad de. así que en la ruleta obtengo 0-5, 6-10, 11-20 etc.

y lo que quiero hacer es iniciar la ruleta seleccionada en 11-20 si el dob del usuario lo hace de esa edad .... ? Sé que setSelection seleccionaría un cierto valor, ¿pero tengo que encontrar el correcto para la edad de los usuarios?

Así que básicamente quieren saber cómo funciona eso y poblar seleccionar el spinner correctamente, gracias

Respuesta

8

La clase hereda Spinner setSelection(int position, boolean animate) de AbsSpinner. Llame a ese método con la posición de su valor predeterminado deseado (y false para el bit animado). Solo necesita repetir su lista de valores posibles para verificar las condiciones, entonces ¿quizás no entiendo dónde está su dificultad?

Al leer esto una segunda vez me da la impresión de que esta no es realmente una pregunta de Android. Lo que está buscando es cómo ver si una fecha de nacimiento determinada ubica a un usuario en un rango de edad determinado. He visto matemáticas de edad en Joda aquí: How do I calculate someone's age in Java?

A partir de ahí, es cuestión de ver si la edad está dentro de su rango.

boolean isInRange(Years age, int start, int end) { 
    int intAge = age.getYears(); 
    if (intAge >= start && intAge <= end) { 
    return true; 
    } else { 
    return false; 
    } 
} 

Una más, además de mi respuesta aquí. Si no quieres lidiar con la ejecución de Joda en Android, aquí hay otra posibilidad para calcular la edad utilizando solo los componentes estándar de Java. Ver la tercera publicación.

http://www.coderanch.com/t/391834/java/java/there-better-way-calculate-age

por su solicitud para un ejemplo, aquí es SimpleDateFormat para las cadenas de fecha.

String dateString = "04/02/2004"; 
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy"); 
Date parsedDate = format.parse(dateString, 1); 
+0

hmmm tengo la fecha de nacimiento en una cadena dd/mm/aaaa, cómo puedo calcular la edad a partir de este – Beginner

+0

Puede analizar cadenas de fecha en objetos Date() usando SimpleDateFormat. http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html –

+0

Respuesta editada para demostrar SimpleDateFormat. –

0
String DOB = "04/02/2004"; 
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy"); 
Date parsedDate = format.parse(DOB, 0); 

Date dateNow = new Date(Date.getYear(),Date.getMonth(),Date.getDay()); 

Date dateDiff = dateNow - parsedDate; 
int Age = dateDiff.getYear(); 

if(Age>0 && Age<5){ 
pos = 0; 
}//etc.... 

s1.setSelection(pos, false); 

No he comprobado hacia fuera pero creo que es algo así como que usted está después. Podría estar equivocado. Lo probaré en un min.

+0

ver el problema con esto es que no sé el rango como usted ha puesto Edad> 0 && Edad <5 – Beginner

+0

los rangos podrían cambiar ... en mi código cursor.ogostring (1) podría ser 0 ahora pero podría cambiar en el futuro – Beginner

+0

Bueno, acabo de verificar mi código y la fechaDiff no funciona de todos modos. – AverageMarcus

Cuestiones relacionadas