Java 如何在datepicker Android中仅启用特定日期?

Java 如何在datepicker Android中仅启用特定日期?,java,android,Java,Android,基本上我是在申请预约。因此,我在一个列表中显示日期,当用户选择任何一天时,日期选择器弹出并仅显示相应的日期启用3,4周。例如,如果选择“星期一”,则会启用本月的所有星期一。7,14,21,28当您描述onPickerListener时 像这样的 DatePickerDialog.OnDateSetListener d=new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, int

基本上我是在申请预约。因此,我在一个列表中显示日期,当用户选择任何一天时,日期选择器弹出并仅显示相应的日期启用3,4周。例如,如果选择“星期一”,则会启用本月的所有星期一。7,14,21,28

当您描述onPickerListener时
像这样的

DatePickerDialog.OnDateSetListener d=new DatePickerDialog.OnDateSetListener() {
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        dateAndTime.set(Calendar.YEAR, year);
        dateAndTime.set(Calendar.MONTH, monthOfYear);
        dateAndTime.set(Calendar.DAY_OF_MONTH, dayOfMonth);
        setInitialDateTime();
    }
};  
在onDateSet中描述并处理您的特殊日子
imho

您可以使用

在此列表中传递选择器可接受日期的值


Calendar now = Calendar.getInstance();
DatePickerDialog datePicker = DatePickerDialog.newInstance(
  MainActivity.this,
  now.get(Calendar.YEAR), // Initial year selection
  now.get(Calendar.MONTH), // Initial month selection
  now.get(Calendar.DAY_OF_MONTH) // Inital day selection
);

 datePicker.setSelectableDays(Calendar[] days)

昨天,我发布了一个问题,问我如何在DatePicker Android中只启用特定日期。与用户单击特定日期时一样,DatePicker?中只有相应的日期可用?。我已经解决了这个问题,我将在这里分享:

下面是当用户在星期一单击时弹出的屏幕截图,DatePicker将从那天起仅启用星期一

code

@Override    
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Day day = days.get(position);
                    switch (day.getDay()){
                        case "Monday":
                            appDay = 2;
                            break;
                        case "Tuesday":
                            appDay = 3;
                            break;
                        case "Wednesday":
                            appDay = 4;
                            break;
                        case "Thursday":
                            appDay = 5;
                            break;
                        case "Friday":
                            appDay = 6;
                            break;
                        case "Saturday":
                            appDay = 7;
                            break;
                        case "Sunday":
                            appDay = 1;
                            break;
                        default:
                            appDay = 0;
                            break;
                    }
                    datePickerDialog = DatePickerDialog.newInstance(DayListFragment.this,Year, Month, Day);
                    datePickerDialog.setThemeDark(false);
                    datePickerDialog.setTitle("Select Appointment Date");
                    Calendar calendar1 = Calendar.getInstance();
                    int today = calendar1.get(Calendar.DAY_OF_WEEK);
                    if ( appDay == today)
                    {
                        int update = 0;
                        for (int i = 0; i < calendars.length; i++)
                        {
                            final Calendar calendar2 = Calendar.getInstance();
                            calendar2.get(Calendar.DAY_OF_WEEK);
                            calendar2.add(Calendar.DATE, update);
                            calendars[i] = calendar2;
                            update += 7;
                        }
                    }
                    else if ( appDay > today)
                    {
                        int for1 = appDay - today;
                        for (int i = 0; i < calendars.length; i++)
                        {
                            final Calendar calendar2 = Calendar.getInstance();
                            calendar2.get(Calendar.DAY_OF_WEEK);
                            calendar2.add(Calendar.DATE, for1);
                            calendars[i] = calendar2;
                            for1 += 7;
                        }
                    }
                    else if ( appDay < today)
                    {
                        int for2 = (7-today)+appDay;
                        for (int i = 0; i < calendars.length; i++)
                        {
                            final Calendar calendar2 = Calendar.getInstance();
                            calendar2.get(Calendar.DAY_OF_WEEK);
                            calendar2.add(Calendar.DATE, for2);
                            calendars[i] = calendar2;
                            for2 += 7;
                        }
                    }
                    datePickerDialog.setSelectableDays(calendars);
                    datePickerDialog.show(getFragmentManager(),"DatePickerDialog");
                }
@覆盖
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
天=天。获取(位置);
开关(day.getDay()){
案件“星期一”:
appDay=2;
打破
案件“星期二”:
appDay=3;
打破
案件“星期三”:
appDay=4;
打破
案件“星期四”:
appDay=5;
打破
案件“星期五”:
appDay=6;
打破
“星期六”一案:
appDay=7;
打破
“星期日”一案:
appDay=1;
打破
违约:
appDay=0;
打破
}
datePickerDialog=datePickerDialog.newInstance(DayListFragment.this,Year,Month,Day);
datePickerDialog.setMedMark(false);
datePickerDialog.setTitle(“选择约会日期”);
Calendar calendar1=Calendar.getInstance();
int today=calendar1.get(Calendar.DAY/u周);
如果(appDay==今天)
{
int update=0;
对于(int i=0;i今天)
{
int for1=应用日-今天;
对于(int i=0;i
你能给我举个例子吗?试试另一种方法。我认为这更容易,甚至在这里谢谢你兄弟你需要创建自己的日期选择器或找到一些允许严格日期和应用日期范围的库你可以看看你必须访问。您可以将此代码段简化为
datePickerDialog.setSelectableDays(calendars)
,其余代码无法回答问题。问题是本机
DatePickerDialog
没有这样的方法。也许,您使用了一些库,您应该提到这一点。