diff options
| -rw-r--r-- | main/src/cgeo/geocaching/MainActivity.java | 5 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/TextUtils.java | 13 |
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; + } } |
