diff options
Diffstat (limited to 'main/src')
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; } |
