aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/src/cgeo/geocaching/MainActivity.java5
-rw-r--r--main/src/cgeo/geocaching/utils/TextUtils.java13
2 files changed, 16 insertions, 2 deletions
diff --git a/main/src/cgeo/geocaching/MainActivity.java b/main/src/cgeo/geocaching/MainActivity.java
index 85ae585..45ce698 100644
--- a/main/src/cgeo/geocaching/MainActivity.java
+++ b/main/src/cgeo/geocaching/MainActivity.java
@@ -70,6 +70,7 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
+import java.text.Collator;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -463,11 +464,11 @@ public class MainActivity extends AbstractActionBarActivity {
sorted.addAll(Arrays.asList(CacheType.values()));
sorted.removeAll(cacheTypes);
+ final Collator collator = TextUtils.getCollator();
Collections.sort(sorted, new Comparator<CacheType>() {
-
@Override
public int compare(final CacheType left, final CacheType right) {
- return left.getL10n().compareToIgnoreCase(right.getL10n());
+ return collator.compare(left.getL10n(), right.getL10n());
}
});
diff --git a/main/src/cgeo/geocaching/utils/TextUtils.java b/main/src/cgeo/geocaching/utils/TextUtils.java
index 04a9007..9fc960c 100644
--- a/main/src/cgeo/geocaching/utils/TextUtils.java
+++ b/main/src/cgeo/geocaching/utils/TextUtils.java
@@ -8,6 +8,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.eclipse.jdt.annotation.Nullable;
import java.nio.charset.Charset;
+import java.text.Collator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.CRC32;
@@ -183,4 +184,16 @@ public final class TextUtils {
checksum.update(input.getBytes(CHARSET_UTF8));
return checksum.getValue();
}
+
+ /**
+ * Build a Collator instance appropriate for comparing strings using the default locale while ignoring the casing.
+ *
+ * @return a collator
+ */
+ public static Collator getCollator() {
+ final Collator collator = Collator.getInstance();
+ collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+ collator.setStrength(Collator.TERTIARY);
+ return collator;
+ }
}