Sélectionner une Date/Heure

 

Date

Il existe deux solutions pour laisser l'utilisateur choisir une date:

- Le widget DatePicker

- La dialogue DatePickerDialog

 

Image non trouvée !Les mois vont de 0 à 11 pour janvier à décembre.

Image non trouvée !Surtout dans le cas d'une dialogue, il faudra mémoriser les valeurs pour pouvoir les réutiliser ensuite !

 

L'initialisation diffère évidemment suivant le type de DatePicker utilisé !

Pour le widget, il faudra utiliser la métode init (int année, int mois, int jours, listener);

Pour la classe, vous utiliserez son constructeur qui attend contexte d'utilisation (généralement l'instance de l'activité), le listener, l'année, le mois et le jour. Il faudra ensuite afficher la dialogue en utilisant la méthode show();

 

Deux listeners seront disponibles:

- OnDateChangedListener

- OnDateSetListener

Ces listeners seront déclenchés lorsque l'utilisateur va modifier la date.

Il existe aussi des méthodes:

getYear, getMonth ou getDayOfMonth pour récupérer l'année, le mois et le jour dans le mois

Image non trouvée !Le mois à la sauce JAVA ! il commence donc à 0 pour finir à 11 soit 12 mois...

 

Exemple de code

Le mieux sera de voir le chapitre sur les listeners Date dans lequel les deux cas d'utilisation sont traités !

 

Image non trouvée !A partir d'HoneyComb (API 11), il existe une méthode nommée setCalendarViewShown(boolean). Ce paramètre attend en entrée true ou false pour afficher à la place de l'année un calendrier. La valeur par défaut varie suivant les modèles de téléphones utilisées. Le problème étant la place occupée qui est différente suivant que vous affichez simplement l'année ou le calendrier ! Donc si vous avez un écran calculé tout jouste pour l'affichage de l'année à la place du calendrier, il est préférable de systèmatiquement positionner à false cette valeur sans quoi l'affichage pourrait poser quelques problèmes !

Vous pouvez aussi utiliser l'attribut android:calendarViewShown.

 

Heure

Là encore, il existe deux solutions pour laisser l'utilisateur choisir une Heure:

- Le widget TimePicker

- La dialogue TimePickerDialog

Le widget

Pour le widget, les méthodes suivantes sont disponibles:

Initialiser l'heure et minute de l'objet

setCurrentHour(int heure);
setCurrentMinute(int minute);

Implémenter un listener
timePicker.setOnTimeChangedListener(listenerTime);

Pour indiquer que l'heure et au format 12/24 heures (dans le cas de 12 heures, PM s'affichera en plus sur le côté droit du widget)
timePicker.setIs24HourView(true/false);

Pour activer/désactiver la saisie utilisateur:
timePicker.setEnabled(true/false);

 

La dialogue

Pour la dialogue, l'essentiel se passera au niveau du constructeur:

TimePickerDialog timePicker=new TimePickerDialog(contexte d’utilisation (instance de l'activité généralement donc this), listenerTime /* Pour déclarer le listener à utiliser*/,

int heure,
int minute,
true /* En 24 heures et false pour un affichage en 12 */);

Puis la méthode show sur l'instance fera apparaître la dialogue

 

Autres

En java, il existe des classes permettant de gérer les dates, bonne lecture...