मेरा लक्ष्य एक एंड्रॉइड लाइब्रेरी ढूंढना है जो मुझे सरणी के आधार पर कैलेंडर दृश्य पर विभिन्न तिथियों को चिह्नित करने की अनुमति देगा। तिथियां संगत हो सकती हैं या नहीं भी हो सकती हैं। मेरा आदर्श परिदृश्य प्रत्येक तारीख के पृष्ठभूमि रंग को बदलना है। महत्वपूर्ण जटिलता यह है कि मुझे रनटाइम तक यह रंग नहीं पता है, क्योंकि यह सर्वर क्वेरी से आएगा।सामग्री-कैलेंडरदृश्य दिनांकों का पृष्ठभूमि रंग सेट
मैं इस दिन शोध कर रहा हूं, और मेरी सबसे अच्छी उम्मीद material-calendarview
(github) प्रतीत होती है। हालांकि, मुझे उनके कोड को कुछ हद तक अभेद्य पाया जा रहा है, जो मुझ पर है, लेकिन मैं पूरी तरह से अटक गया हूं।
मैं अपने एक्सएमएल लेआउट में इस तरह एक कैलेंडर जोड़ दिया है:
<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"/>
और फिर मेरी गतिविधि में, मैं इन उदाहरण चर है:
private MaterialCalendarView calendarView;
private ArrayList<Date> markedDates;
और मेरे onCreateView()
calendarView = (MaterialCalendarView) view.findViewById(R.id.calendar_view);
ठीक है, काफी आसान है। लेकिन मैं यह नहीं समझ सकता कि कैलेंडर को मेरी तिथियों से कैसे चिह्नित किया जाए। मैं इस पद्धति पर काम कर रहा हूँ, लेकिन मैं तो बस नहीं पता है कि मैं यहाँ है परे आगे बढ़ने के लिए कैसे: अंतिम पंक्ति इस आंतरिक श्रेणी को संदर्भित करता
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, ????));
}
कि:
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));
}
}
मुझे लगता है कि लगता है कि मेरी मेरे ArrayList<Date> markedDates
को Collection<CalendarDay> dates
पर कॉल करने के लिए चुनौती देने के लिए चुनौती। इस बात से सहमत? लेकिन यह वह जगह है जहां मैं वास्तव में नीचे गिर गया। यह data structure मेरे लिए विचित्र है। जब मैं new CalendarDay()
पर कॉल करके इसे तुरंत चालू करने का प्रयास करता हूं तो मेरी कक्षा तुरंत 10 नई विधियों के साथ फैली हुई है जिन्हें मैं उनकी भूमिका नहीं समझता या उनके साथ क्या करना है। जाहिर है, मैं यहां रेलों से बाहर जा रहा हूं। यह सिर्फ यह मुश्किल नहीं हो सकता है।
क्या किसी ने इस उद्देश्य के लिए इस पुस्तकालय का उपयोग किया है और यह पता है कि इस कार्य को कैसे पूरा किया जाए? मैं पीसने वाली रोक में हूं। साथ ही, यदि एक सरल लाइब्रेरी है जो मुझे रंगीन रंगों को केवल रंग-समय पर ज्ञात रंग का उपयोग करने की अनुमति देने के लिए अनुमति देती है, तो मैं सभी कान हूं।
किसी भी मदद के लिए धन्यवाद। मुझे डर है कि मैंने इसे भ्रमित तरीके से लिखा है, जो इस तथ्य का नतीजा है कि मैं पूरी तरह उलझन में हूं।
ब्रो जब मैं करता हूं कि getYear() को हटा दिया गया है, तो मैं इसे बदलने के लिए क्या कर सकता हूं –