aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/src/cgeo/geocaching/CacheListActivity.java3
-rw-r--r--main/src/cgeo/geocaching/sorting/DistanceComparator.java10
-rw-r--r--main/src/cgeo/geocaching/sorting/SortActionProvider.java2
-rw-r--r--main/src/cgeo/geocaching/ui/CacheListAdapter.java3
4 files changed, 16 insertions, 2 deletions
diff --git a/main/src/cgeo/geocaching/CacheListActivity.java b/main/src/cgeo/geocaching/CacheListActivity.java
index 661755d..7b887aa 100644
--- a/main/src/cgeo/geocaching/CacheListActivity.java
+++ b/main/src/cgeo/geocaching/CacheListActivity.java
@@ -983,8 +983,9 @@ public class CacheListActivity extends AbstractListActivity implements FilteredA
private void updateAdapter() {
adapter.notifyDataSetChanged();
- adapter.forceSort();
adapter.reFilter();
+ adapter.checkEvents();
+ adapter.forceSort();
}
private void showFooterLoadingCaches() {
diff --git a/main/src/cgeo/geocaching/sorting/DistanceComparator.java b/main/src/cgeo/geocaching/sorting/DistanceComparator.java
index 6812865..3da5736 100644
--- a/main/src/cgeo/geocaching/sorting/DistanceComparator.java
+++ b/main/src/cgeo/geocaching/sorting/DistanceComparator.java
@@ -16,6 +16,16 @@ public class DistanceComparator extends AbstractCacheComparator {
final private List<Geocache> list;
private boolean cachedDistances;
+ final static public DistanceComparator singleton = new DistanceComparator();
+
+ public DistanceComparator() {
+ // This constructor should not be used as a comparator as distances will not be updated.
+ // It is needed in order to really know we are sorting by Distances in the sort menu.
+ // If you need it for sorting, please use the second constructor.
+ coords = null;
+ list = new ArrayList<>();
+ }
+
public DistanceComparator(final Geopoint coords, final List<Geocache> list) {
this.coords = coords;
// create new list so we can iterate over the list in parallel with the cache list adapter
diff --git a/main/src/cgeo/geocaching/sorting/SortActionProvider.java b/main/src/cgeo/geocaching/sorting/SortActionProvider.java
index 61b2ffb..e6db330 100644
--- a/main/src/cgeo/geocaching/sorting/SortActionProvider.java
+++ b/main/src/cgeo/geocaching/sorting/SortActionProvider.java
@@ -62,7 +62,7 @@ public class SortActionProvider extends ActionProvider implements OnMenuItemClic
}
private void registerComparators() {
- register(R.string.caches_sort_distance, null);
+ register(R.string.caches_sort_distance, DistanceComparator.class);
register(R.string.caches_sort_date_hidden, DateComparator.class);
register(R.string.caches_sort_difficulty, DifficultyComparator.class);
register(R.string.caches_sort_finds, FindsComparator.class);
diff --git a/main/src/cgeo/geocaching/ui/CacheListAdapter.java b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
index b0b30aa..8cb2177 100644
--- a/main/src/cgeo/geocaching/ui/CacheListAdapter.java
+++ b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
@@ -177,6 +177,9 @@ public class CacheListAdapter extends ArrayAdapter<Geocache> {
if (cacheComparator == null && eventsOnly) {
return EventDateComparator.singleton;
}
+ if (cacheComparator == null) {
+ return DistanceComparator.singleton;
+ }
return cacheComparator;
}