Sélectionner une Date/Heure
Date
Il existe deux solutions pour laisser l'utilisateur choisir une date:
- Le widget DatePicker
- La dialogue DatePickerDialog
Les mois
vont de 0 à 11 pour janvier à décembre.
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
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 !
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...