javaandroidandroid-libraryandroid-calendarcalendarview

How to add data to events in applandeo calenderView?


There is a vey nice libray(https://github.com/Applandeo/Material-Calendar-View) for customizing the android calenderview . Like for example, for adding events to the calenderview there is class named Eventday.java, which takes calender object and a drawable object as parameters to initialize. I wish it could have take a string value too so that i can also store a descrption of the event, because there is no point in adding events to the calender if one cannot add details about the event(string datatype). Can some one provide a workaround for my problem?

List<EventDay> events = new ArrayList<>();
Calendar calendar = Calendar.getInstance();

//we cannot details about the event(string data) while initializing the EventDay class
events.add(new EventDay(calendar, R.drawable.absentic)); 

Solution

  • First Make a Custom Class

    import com.applandeo.materialcalendarview.EventDay;
    
    import java.util.Calendar;
    
    public class MyEventDay extends EventDay implements Parcelable {
        private String mNote;
        public MyEventDay(Calendar day, int imageResource, String note) {
            super(day, imageResource);
            mNote = note;
        }
        public  String getNote() {
            return mNote;
        }
        private MyEventDay(Parcel in) {
            super((Calendar) in.readSerializable(), in.readInt());
            mNote = in.readString();
        }
        public static final Creator<MyEventDay> CREATOR = new Creator<MyEventDay>() {
            @Override
            public MyEventDay createFromParcel(Parcel in) {
                return new MyEventDay(in);
            }
            @Override
            public MyEventDay[] newArray(int size) {
                return new MyEventDay[size];
            }
        };
        @Override
        public void writeToParcel(Parcel parcel, int i) {
            parcel.writeSerializable(getCalendar());
            parcel.writeInt(getImageResource());
            parcel.writeString(mNote);
        }
        @Override
        public int describeContents() {
            return 0;
        }
    }
    

    Adding Event In Calender

     mEventDays.add(new MyEventDay(calender, R.drawable.ic_note_sticky, "I am Event");
    

    For Retriving String

     calendarView.setOnDayClickListener(new OnDayClickListener() {
                @Override
                public void onDayClick(EventDay eventDay) {
                     Log.e("Event",((MyEventDay) eventDay).getNote()+" <--");
                }
            });
    

    Its Work For me , I Hope its Helpfull to you also