mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-10 14:20:55 +00:00
fixed RaceFlagViewer caching (problem while GateStart)
This commit is contained in:
1 parent
5fe61bd6af
commit
f3255c6780
1 file changed
+11
-17
+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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user