matériel-calendarview définir la couleur de fond de dates

Mon objectif est de trouver un Android de bibliothèque qui me permet de marquer les différentes dates d'un calendrier basé sur un tableau. Les dates peuvent ou peuvent ne pas être contigus. Mon scénario idéal est de changer la couleur de fond de chaque jour. La principale complication est que je ne connais pas cette couleur jusqu'à l'exécution, car il va venir à partir d'un serveur de requête.

J'ai fait des recherches toute la journée, et mon meilleur espoir semble être material-calendarview (github). Cependant, je trouve que leur code soit un peu impénétrable, qui est sur moi, mais je suis complètement bloqué.

J'ai ajouté un calendrier comme ça dans mon XML mise en page:

<com.prolificinteractive.materialcalendarview.MaterialCalendarView
        android:id="@+id/calendar_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        app:mcv_showOtherDates="all"
        app:mcv_selectionColor="#00F"/>

Et puis dans mon activité, j'ai ces variables d'instance:

private MaterialCalendarView calendarView;
private ArrayList<Date> markedDates;

et ce code dans mon onCreateView()

calendarView = (MaterialCalendarView) view.findViewById(R.id.calendar_view);

Ok, assez facile. Mais je ne peux pas comprendre comment marquer le calendrier de mon tableau de dates. Je suis en train de travailler sur cette méthode, mais je ne sais pas comment aller au-delà de ce que j'ai ici:

private void initializeCalendar() {

        calendarView.setOnDateChangedListener(context);
        calendarView.setShowOtherDates(MaterialCalendarView.SHOW_ALL);

        Calendar calendar = Calendar.getInstance();
        calendarView.setSelectedDate(calendar.getTime());

        calendar.set(calendar.get(Calendar.YEAR), Calendar.JANUARY, 1);
        calendarView.setMinimumDate(calendar.getTime());

        calendar.set(calendar.get(Calendar.YEAR), Calendar.DECEMBER, 31);
        calendarView.setMaximumDate(calendar.getTime());

        int bgColor = sharedVisualElements.getPrimaryColor();

        calendarView.addDecorators(new EventDecorator(bgColor, ????));
}

Que la dernière ligne fait référence à cette intérieure:

private class EventDecorator implements DayViewDecorator {

        private final int color;
        private final HashSet<CalendarDay> dates;

        public EventDecorator(int color, Collection<CalendarDay> dates) {
            this.color = color;
            this.dates = new HashSet<>(dates);
        }

        @Override
        public boolean shouldDecorate(CalendarDay day) {
            return dates.contains(day);
        }

        @Override
        public void decorate(DayViewFacade view) {
            view.addSpan(new DotSpan(5, color));
        }
    }

Je pense que mon défi pour convertir mes ArrayList<Date> markedDates à ce qu'ils appellent Collection<CalendarDay> dates. D'accord? Mais c'est là que j'ai vraiment ralentir. Cette structure de données est bizarre pour moi. Lorsque j'essaie d'instancier en appelant new CalendarDay() ma classe immédiatement s'agrandit avec environ 10 nouvelles méthodes que je ne comprends pas leur rôle ou quoi faire avec eux. Clairement, je vais sur les rails d'ici. Il ne peut tout simplement pas être cette délicate.

Quelqu'un a utilisé cette bibliothèque à cette fin et de savoir comment accomplir cette tâche? Je suis à une halte de meulage. Aussi, si il est plus simple de la bibliothèque pour me permettre de définir des couleurs d'arrière-plan à l'aide d'une seule couleur connus au moment de l'exécution, je suis tout ouïe.

Merci pour toute aide. J'ai peur de ce que j'ai écrit cela dans une manière confuse, ce qui est un résultat du fait que je suis complètement déconcerté.

InformationsquelleAutor Alex | 2015-11-04