aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
authorMathieu Alorent <github@kumy.net>2014-09-04 12:58:20 +0200
committerSamuel Tardieu <sam@rfc1149.net>2014-09-04 20:22:53 +0200
commit5f15e55d7dcb9649b96c3e1790a46b1f52cbbc31 (patch)
tree7110768dce2a047dc35d880256aec282a311848c /main/src
parentd218bb2e318e48d22a3e942ecb195575da70f66a (diff)
downloadcgeo-5f15e55d7dcb9649b96c3e1790a46b1f52cbbc31.zip
cgeo-5f15e55d7dcb9649b96c3e1790a46b1f52cbbc31.tar.gz
cgeo-5f15e55d7dcb9649b96c3e1790a46b1f52cbbc31.tar.bz2
fix #4260 & #3194: sort and resort problems
This fixes: - #4260: sort by distance doesn't work - #3914: resorting of event lists doesn't work
Diffstat (limited to 'main/src')
-rw-r--r--main/src/cgeo/geocaching/CacheListActivity.java3
-rw-r--r--main/src/cgeo/geocaching/sorting/DistanceComparator.java13
-rw-r--r--main/src/cgeo/geocaching/sorting/SortActionProvider.java2
-rw-r--r--main/src/cgeo/geocaching/ui/CacheListAdapter.java3
4 files changed, 18 insertions, 3 deletions
diff --git a/main/src/cgeo/geocaching/CacheListActivity.java b/main/src/cgeo/geocaching/CacheListActivity.java
index a817aa5..522004e 100644
--- a/main/src/cgeo/geocaching/CacheListActivity.java
+++ b/main/src/cgeo/geocaching/CacheListActivity.java
@@ -975,8 +975,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 541ce48..b3b751b 100644
--- a/main/src/cgeo/geocaching/sorting/DistanceComparator.java
+++ b/main/src/cgeo/geocaching/sorting/DistanceComparator.java
@@ -3,6 +3,7 @@ package cgeo.geocaching.sorting;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.geopoint.Geopoint;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -15,7 +16,17 @@ public class DistanceComparator extends AbstractCacheComparator {
final private List<Geocache> list;
private boolean cachedDistances;
- public DistanceComparator(final Geopoint coords, List<Geocache> list) {
+ 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;
this.list = list;
}
diff --git a/main/src/cgeo/geocaching/sorting/SortActionProvider.java b/main/src/cgeo/geocaching/sorting/SortActionProvider.java
index e9e65a0..6251984 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 b879e54..eaede2a 100644
--- a/main/src/cgeo/geocaching/ui/CacheListAdapter.java
+++ b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
@@ -179,6 +179,9 @@ public class CacheListAdapter extends ArrayAdapter<Geocache> {
if (cacheComparator == null && eventsOnly) {
return EventDateComparator.singleton;
}
+ if (cacheComparator == null) {
+ return DistanceComparator.singleton;
+ }
return cacheComparator;
}