Отключить целую неделю кроме выходных в календаре Android - PullRequest
0 голосов
/ 31 января 2019

Я сейчас использую 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 Ответ

0 голосов
/ 31 января 2019

После некоторого поиска и настройки мне удалось сделать это с помощью следующего кода:

                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);
...