Fixed Month Loading Problem
This commit is contained in:
@@ -119,7 +119,6 @@ public class ScheduleFragment extends Fragment implements MonthLoader.MonthChang
|
||||
Iterator<Event> it_modEvents = mod.events.getEventsOfMonth(newYear, newMonth);
|
||||
while (it_modEvents.hasNext()) {
|
||||
Event e = it_modEvents.next();
|
||||
//log.d("Event in while", e.toString());
|
||||
|
||||
Calendar ende = Calendar.getInstance();
|
||||
ende.setTimeInMillis(e.getEndDate());
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
package de.sebse.fuplanner.tools.ui.weekview;
|
||||
|
||||
|
||||
import android.util.SparseArray;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
|
||||
public class MonthLoader implements WeekViewLoader {
|
||||
|
||||
private SparseArray<List<? extends WeekViewEvent>> cachedEvents = new SparseArray<>(3);
|
||||
private MonthChangeListener mOnMonthChangeListener;
|
||||
|
||||
public MonthLoader(MonthChangeListener listener) {
|
||||
@@ -20,7 +22,17 @@ public class MonthLoader implements WeekViewLoader {
|
||||
|
||||
@Override
|
||||
public List<? extends WeekViewEvent> onLoad(int periodIndex) {
|
||||
return mOnMonthChangeListener.onMonthChange(periodIndex / 12, periodIndex % 12 + 1);
|
||||
SparseArray<List<? extends WeekViewEvent>> newCache = new SparseArray<>(3);
|
||||
ArrayList<WeekViewEvent> result = new ArrayList<>();
|
||||
for (int i = periodIndex - 1; i <= periodIndex + 1; i++) {
|
||||
List<? extends WeekViewEvent> events = cachedEvents.get(i, null);
|
||||
if (events == null)
|
||||
events = mOnMonthChangeListener.onMonthChange(i / 12, i % 12 + 1);
|
||||
newCache.put(i, events);
|
||||
result.addAll(events);
|
||||
}
|
||||
cachedEvents = newCache;
|
||||
return result;
|
||||
}
|
||||
|
||||
public MonthChangeListener getOnMonthChangeListener() {
|
||||
|
||||
@@ -38,7 +38,6 @@ import android.view.View;
|
||||
import android.view.ViewConfiguration;
|
||||
import android.widget.OverScroller;
|
||||
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
@@ -863,9 +862,9 @@ public class WeekView extends View {
|
||||
limitEventTime(days);
|
||||
}
|
||||
|
||||
for (int dayNumber = leftDaysWithGaps + 1;
|
||||
dayNumber <= leftDaysWithGaps + getRealNumberOfVisibleDays() + 1;
|
||||
dayNumber++) {
|
||||
int checkFirst = leftDaysWithGaps + 1;
|
||||
int checkLast = checkFirst + getRealNumberOfVisibleDays();
|
||||
for (int dayNumber = checkFirst; dayNumber <= checkLast; dayNumber++) {
|
||||
|
||||
// Check if the day is today.
|
||||
day = (Calendar) mHomeDate.clone();
|
||||
@@ -882,7 +881,7 @@ public class WeekView extends View {
|
||||
// Get more events if necessary. We want to store the events 3 months beforehand. Get
|
||||
// events only when it is the first iteration of the loop.
|
||||
if (mEventRects == null || mRefreshEvents ||
|
||||
(dayNumber == leftDaysWithGaps + 1 && mFetchedPeriod != (int) mWeekViewLoader.toWeekViewPeriodIndex(day) &&
|
||||
(dayNumber == checkFirst && mFetchedPeriod != (int) mWeekViewLoader.toWeekViewPeriodIndex(day) &&
|
||||
Math.abs(mFetchedPeriod - mWeekViewLoader.toWeekViewPeriodIndex(day)) > 0.5)) {
|
||||
getMoreEvents(day);
|
||||
mRefreshEvents = false;
|
||||
|
||||
Reference in New Issue
Block a user