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);
|
Iterator<Event> it_modEvents = mod.events.getEventsOfMonth(newYear, newMonth);
|
||||||
while (it_modEvents.hasNext()) {
|
while (it_modEvents.hasNext()) {
|
||||||
Event e = it_modEvents.next();
|
Event e = it_modEvents.next();
|
||||||
//log.d("Event in while", e.toString());
|
|
||||||
|
|
||||||
Calendar ende = Calendar.getInstance();
|
Calendar ende = Calendar.getInstance();
|
||||||
ende.setTimeInMillis(e.getEndDate());
|
ende.setTimeInMillis(e.getEndDate());
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
package de.sebse.fuplanner.tools.ui.weekview;
|
package de.sebse.fuplanner.tools.ui.weekview;
|
||||||
|
|
||||||
|
|
||||||
|
import android.util.SparseArray;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class MonthLoader implements WeekViewLoader {
|
public class MonthLoader implements WeekViewLoader {
|
||||||
|
private SparseArray<List<? extends WeekViewEvent>> cachedEvents = new SparseArray<>(3);
|
||||||
private MonthChangeListener mOnMonthChangeListener;
|
private MonthChangeListener mOnMonthChangeListener;
|
||||||
|
|
||||||
public MonthLoader(MonthChangeListener listener) {
|
public MonthLoader(MonthChangeListener listener) {
|
||||||
@@ -20,7 +22,17 @@ public class MonthLoader implements WeekViewLoader {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<? extends WeekViewEvent> onLoad(int periodIndex) {
|
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() {
|
public MonthChangeListener getOnMonthChangeListener() {
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ import android.view.View;
|
|||||||
import android.view.ViewConfiguration;
|
import android.view.ViewConfiguration;
|
||||||
import android.widget.OverScroller;
|
import android.widget.OverScroller;
|
||||||
|
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
@@ -863,9 +862,9 @@ public class WeekView extends View {
|
|||||||
limitEventTime(days);
|
limitEventTime(days);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int dayNumber = leftDaysWithGaps + 1;
|
int checkFirst = leftDaysWithGaps + 1;
|
||||||
dayNumber <= leftDaysWithGaps + getRealNumberOfVisibleDays() + 1;
|
int checkLast = checkFirst + getRealNumberOfVisibleDays();
|
||||||
dayNumber++) {
|
for (int dayNumber = checkFirst; dayNumber <= checkLast; dayNumber++) {
|
||||||
|
|
||||||
// Check if the day is today.
|
// Check if the day is today.
|
||||||
day = (Calendar) mHomeDate.clone();
|
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
|
// 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.
|
// events only when it is the first iteration of the loop.
|
||||||
if (mEventRects == null || mRefreshEvents ||
|
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)) {
|
Math.abs(mFetchedPeriod - mWeekViewLoader.toWeekViewPeriodIndex(day)) > 0.5)) {
|
||||||
getMoreEvents(day);
|
getMoreEvents(day);
|
||||||
mRefreshEvents = false;
|
mRefreshEvents = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user