I have code to display time picker dialog, and I've made a filter setMinTime and setMaxTime, but I want to filter in more detail. How can I make filter for today and other date in time picker?
Filter for today:
timepickerdialog.setMinTime(now.get(Calendar.HOUR_OF_DAY), 0, 0);
timepickerdialog.setMaxTime(16, 0, 0);
Filter for other day:
timepickerdialog.setMinTime(8, 0, 0);
timepickerdialog.setMaxTime(16, 0, 0);
Complete code:
public void timePicker(){
Calendar now = Calendar.getInstance();
TimePickerDialog timepickerdialog = TimePickerDialog.newInstance(
FormTestDrive.this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
true);
timepickerdialog.setMinTime(8, 0, 0);
timepickerdialog.setMaxTime(16, 0, 0);
timepickerdialog.setThemeDark(false);
timepickerdialog.vibrate(false);
timepickerdialog.dismissOnPause(false);
timepickerdialog.show(getFragmentManager(), "Timepickerdialog");
}
First you need to check selected date from DatePicker is today or not and send today date boolean flag to timePicker
method as below :
new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
Calendar selectedDate = Calendar.getInstance();
selectedDate.set(Calendar.YEAR,year);
selectedDate.set(Calendar.MONTH,monthOfYear);
selectedDate.set(Calendar.DAY_OF_MONTH,dayOfMonth);
openTimePicker(DateUtils.isToday(selectedDate.getTimeInMillis()));
}
}, Calendar.getInstance().get(Calendar.YEAR),Calendar.getInstance().get(Calendar.MONTH),Calendar.getInstance().get(Calendar.DAY_OF_MONTH)).show();
Use that today date boolean flag parameter into timePicker
method as below to set min and max time as below :
public void timePicker(boolean isTodayDate){
int minHour = 8;
int maxHour = 16;
Calendar now = Calendar.getInstance();
TimePickerDialog timepickerdialog = TimePickerDialog.newInstance(
FormTestDrive.this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
true);
if(isTodayDate){
if(now.get(Calendar.HOUR_OF_DAY)>8 && now.get(Calendar.HOUR_OF_DAY)<16){
minHour = now.get(Calendar.HOUR_OF_DAY);
}
}
timepickerdialog.setMinTime(minHour, 0, 0);
timepickerdialog.setMaxTime(maxHour, 0, 0);
timepickerdialog.setThemeDark(false);
timepickerdialog.vibrate(false);
timepickerdialog.dismissOnPause(false);
timepickerdialog.show(getFragmentManager(), "Timepickerdialog");
}