代码之家  ›  专栏  ›  技术社区  ›  Hossam Hassan

在日历Android中禁用除周末以外的整周

  •  0
  • Hossam Hassan  · 技术社区  · 6 年前

    即时消息当前正在使用 MaterialDateTimePicker 日期和时间选取器库, 但我面临着一个问题,除了我从API获得的某些天之外,我不能禁用整个星期。

    在图书馆里,它说你可以通过使用

      Calendar[] days = new Calendar[13];
                    for (int i = -6; i < 7; i++) {
                        Calendar day = Calendar.getInstance();
                        day.add(Calendar.DAY_OF_MONTH, i * 2);
                        days[i + 6] = day;
                    }
                    dpd.setSelectableDays(days);
    

    但是我怎么改成按名字禁用星期几呢

    1 回复  |  直到 6 年前
        1
  •  0
  •   Hossam Hassan    6 年前

    经过一些搜索和调整,我设法用以下代码进行了操作:

                    Calendar day;
                    List<Calendar> weekends = new ArrayList<>();
                    int weeks = 5;
    
                    for (int i = 0; i < (weeks * 7); i = i + 7) {
    
                        for (int d = 0; d < slots.getResponse().getDays().size(); d++) {
    
                            day = Calendar.getInstance();
                            switch (slots.getResponse().getDays().get(d)) {
                                case "Sunday":
                                    day.add(Calendar.DAY_OF_YEAR, (Calendar.SUNDAY - day.get(Calendar.DAY_OF_WEEK) + i));
                                    weekends.add(day);
                                    break;
                                case "Monday":
                                    day.add(Calendar.DAY_OF_YEAR, (Calendar.MONDAY - day.get(Calendar.DAY_OF_WEEK) + i));
                                    weekends.add(day);
                                    break;
                                case "Tuesday":
                                    day.add(Calendar.DAY_OF_YEAR, (Calendar.TUESDAY - day.get(Calendar.DAY_OF_WEEK) + i));
                                    weekends.add(day);
                                    break;
                                case "Wednesday":
                                    day.add(Calendar.DAY_OF_YEAR, (Calendar.WEDNESDAY - day.get(Calendar.DAY_OF_WEEK) + i));
                                    weekends.add(day);
                                    break;
                                case "Thursday":
                                    day.add(Calendar.DAY_OF_YEAR, (Calendar.THURSDAY - day.get(Calendar.DAY_OF_WEEK) + i));
                                    weekends.add(day);
                                    break;
                                case "Friday":
                                    day.add(Calendar.DAY_OF_YEAR, (Calendar.FRIDAY - day.get(Calendar.DAY_OF_WEEK) + i));
                                    weekends.add(day);
                                    break;
                                case "Saturday":
                                    day.add(Calendar.DAY_OF_YEAR, (Calendar.SATURDAY - day.get(Calendar.DAY_OF_WEEK) + i));
                                    weekends.add(day);
                                    break;
    
                            }
    
                        }
                    }
                    Calendar[] SelectableDays = weekends.toArray(new Calendar[weekends.size()]);
                    dpd.setSelectableDays(SelectableDays);