4.12.12

Respuestas a preguntas sobre el control DatePicker en Android

Me han hecho unas preguntas en el artículo en el que explicaba cómo utilizar el widget DatePicker en Android.

Voy respondiéndolas una a una:

“Hola, cuando me aparece el DatePicker comienza en el 01/01/1900. ¿Me puedes decir cómo debería de definir una fecha mínima para mostrar? Gracias!”

En el ejemplo, se definen unos atributos donde se guardan los valores del día, mes y año (mYear, mMonth y mDay) y con los que vamos a inicializar el control DatePicker al crearlo. En el OnCreate es donde se dan los valores de inicio a estos atributos para que al abrirse el DatePicker se inicie con esos valores. Las instrucciones donde se hace esto son:

final Calendar c = Calendar.getInstance();       
mYear = c.get(Calendar.YEAR);       
mMonth = c.get(Calendar.MONTH);       
mDay = c.get(Calendar.DAY_OF_MONTH); 


Pero tú puedes personalizarla con los valores que quieras. Por ejemplo, si quieres que la fecha inicial que aparezca sea el 15 de Febrero de 1980 bastaría con sustituir esas instrucciones por estas otras:


mYear = 1980;
mMonth = 1; // los meses empiezan a contar en cero (0= Enero, 1 = Febrero...)
mDay = 15;




Otro compañero me ha hecho otra pregunta en este mismo artículo:

“y si quisiera guardar la fecha en una base de datos como haría”

Los pasos serían crearse una base de datos para la aplicación, definir una tabla que contendría las fechas y después definir las operaciones de guardar y recuperar la fecha desde y hacia la tabla en la base de datos. Te voy a pasar unos tutoriales en los que explican todos los pasos para crear la base de datos, la tabla y obtener y escribir información en ella.

Bases de Datos en Android (I): Primeros pasos

Bases de Datos en Android (II): Insertar/Actualizar/Eliminar

Bases de Datos en Android (III): Consultar/Recuperar registros

Un saludo.

2 comments:

  1. Hola una pregunta, como se le puede hacer para definir un rango de años, por ejemplo:
    de 1920 a 2001.
    Gracias.

    ReplyDelete
  2. hola, Luis

    En el siguiente enlace explican cómo definir un rango de años en un datepickerdialog:

    http://stackoverflow.com/questions/10836679/android-datepicker-min-max-date-before-api-level-11

    Básicamente es utilizar (en vez de X pon el id del datepicker):

    DatePicker datePickerInstance = (DatePicker) findViewById(R.id.X);
    GregorianCalendar minDate = new GregorianCalendar();

    minDate.set(GregorianCalendar.YEAR, 2010);
    minDate.set(GregorianCalendar.MONTH, 1);
    minDate.set(GregorianCalendar.DAY_OF_MONTH, 1);

    GregorianCalendar maxDate = new GregorianCalendar();
    maxDate.set(GregorianCalendar.YEAR, 2020);
    maxDate.set(GregorianCalendar.MONTH, 11);
    maxDate.set(GregorianCalendar.DAY_OF_MONTH, 31);

    datePickerInstance.setMinDate(minDate.getTimeInMillis());
    datePickerInstance.setMaxDate(maxDate.getTimeInMillis());

    ReplyDelete