fixed RaceFlagViewer caching (problem while GateStart)

This commit is contained in:
Peter Siegmund committed 2015-06-27 10:30:44 +02:00
1 parent 5fe61bd6af
commit f3255c6780
1 file changed
+11 -17
@@ -118,32 +118,24 @@ public class RaceFlagViewerFragment extends BaseFragment {
List<FlagPole> currentState = poleState.getCurrentState();
List<FlagPole> upcoming = poleState.computeUpcomingChanges();
FlagPole nextPole = FlagPoleState.getMostInterestingFlagPole(upcoming);
mFlagCache = new FlagsCache(poleState.getNextStateValidFrom());
mFlagCache = new FlagsCache(poleState.getNextStateValidFrom(), nextPole);
int size = 0;
Flags flag;
boolean nextFlag;
for (FlagPole flagPole : currentState) {
size++;
flag = flagPole.getUpperFlag();
nextFlag = isNextFlag(flag, nextPole);
if (nextFlag) {
mFlagCache.nextFlag = size;
}
mLayout.addView(createFlagView(now, poleState, flag, nextFlag, currentState.size() == size, flagPole.isDisplayed(), UPPER_FLAG));
mLayout.addView(createFlagView(now, poleState, flag, isNextFlag(flag, nextPole), currentState.size() == size, flagPole.isDisplayed(), UPPER_FLAG));
if (!flagPole.getLowerFlag().equals(Flags.NONE)) {
flag = flagPole.getLowerFlag();
nextFlag = isNextFlag(flag, nextPole);
if (nextFlag) {
mFlagCache.nextFlag = size;
}
mLayout.addView(createFlagView(now, poleState, flag, nextFlag, currentState.size() == size, false, LOWER_FLAG));
mLayout.addView(createFlagView(now, poleState, flag, isNextFlag(flag, nextPole), currentState.size() == size, false, LOWER_FLAG));
}
}
} else {
if (mLayout != null) {
int nextFlag = 0;
if (mLayout != null && mFlagCache.nextPole != null) {
for (int i = 0; i < mLayout.getChildCount(); i++) {
if (mFlagCache.nextFlag == ++nextFlag) {
ImageView flagImage = ViewHolder.get(mLayout.getChildAt(i), R.id.flag);
Flags flags = (Flags) flagImage.getTag();
if (flags != null && flags.equals(mFlagCache.nextPole.getUpperFlag())) {
updateFlagView(now, mLayout.getChildAt(i));
}
}
@@ -192,6 +184,7 @@ public class RaceFlagViewerFragment extends BaseFragment {
}
flagView.setImageDrawable(FlagsResources.getFlagDrawable(getActivity(), flag.name(), 96));
flagView.setTag(flag);
if (flag == Flags.CLASS && getRace().getFleet().getColor() != null) {
flagView.setBackgroundColor(getFleetColorId());
}
@@ -250,10 +243,11 @@ public class RaceFlagViewerFragment extends BaseFragment {
private class FlagsCache {
private TimePoint mChange;
private int nextFlag = 0;
public FlagPole nextPole;
public FlagsCache(TimePoint change) {
public FlagsCache(TimePoint change, FlagPole pole) {
mChange = change;
nextPole = pole;
}
}
}