Как добавить данные к событиям в applandeo calenderView? - PullRequest
1 голос
/ 20 мая 2019

Существует очень хорошая библиотека (https://github.com/Applandeo/Material-Calendar-View) для настройки просмотра календаря Android. Как, например, для добавления событий в представление календаря есть класс с именем Eventday.java, который принимает объект календаря и рисуемый объект в качестве параметровчтобы инициализировать. Я хотел бы, чтобы он также мог принимать строковое значение, чтобы я мог также сохранить описание события, потому что нет смысла добавлять события в календарь, если невозможно добавить подробности о событии (тип данных строки).кто-нибудь может решить мою проблему?

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

1 Ответ

2 голосов
/ 20 мая 2019

Сначала создайте пользовательский класс

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;
    }
}

Добавление события в календарь

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

для извлечения строки

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

Его работа Для меня, я надеюсь, что это будет полезно и вам

...