From 2547eda8bd68341ddafbcd730734336d6cd9be8f Mon Sep 17 00:00:00 2001 From: sspanak Date: Sat, 24 Feb 2024 10:49:04 +0200 Subject: [PATCH] language list is now properly sorted on Android < 7.0 --- .../github/sspanak/tt9/languages/Language.java | 10 +++++++++- .../tt9/languages/LanguageCollection.java | 16 +++++++++------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/io/github/sspanak/tt9/languages/Language.java b/app/src/main/java/io/github/sspanak/tt9/languages/Language.java index 635cdd2b..7fdbafb8 100644 --- a/app/src/main/java/io/github/sspanak/tt9/languages/Language.java +++ b/app/src/main/java/io/github/sspanak/tt9/languages/Language.java @@ -7,7 +7,7 @@ import java.util.HashMap; import java.util.Locale; -public class Language { +public class Language implements Comparable { public static String SPECIAL_CHARS_KEY = "0"; public static String PUNCTUATION_KEY = "1"; @@ -271,4 +271,12 @@ public class Language { public String toString() { return getName(); } + + + @Override + public int compareTo(Language other) { + String key = getName().equals("Suomi") ? "su" : getLocale().toString(); + String otherKey = other.getName().equals("Suomi") ? "su" : other.getLocale().toString(); + return key.compareTo(otherKey); + } } diff --git a/app/src/main/java/io/github/sspanak/tt9/languages/LanguageCollection.java b/app/src/main/java/io/github/sspanak/tt9/languages/LanguageCollection.java index f9134618..e15f45aa 100644 --- a/app/src/main/java/io/github/sspanak/tt9/languages/LanguageCollection.java +++ b/app/src/main/java/io/github/sspanak/tt9/languages/LanguageCollection.java @@ -1,12 +1,11 @@ package io.github.sspanak.tt9.languages; import android.content.Context; -import android.os.Build; import androidx.annotation.Nullable; import java.util.ArrayList; -import java.util.Comparator; +import java.util.Collections; import java.util.HashMap; import io.github.sspanak.tt9.Logger; @@ -77,10 +76,11 @@ public class LanguageCollection { } } - if (sort && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - langList.sort(Comparator.comparing(l -> l.getLocale().toString())); + if (sort) { + Collections.sort(langList); } + return langList; } @@ -91,8 +91,8 @@ public class LanguageCollection { public static ArrayList getAll(Context context, boolean sort) { ArrayList langList = new ArrayList<>(getInstance(context).languages.values()); - if (sort && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - langList.sort(Comparator.comparing(l -> l.getLocale().toString())); + if (sort) { + Collections.sort(langList); } return langList; @@ -108,7 +108,9 @@ public class LanguageCollection { for (int i = 0; i < listSize; i++) { stringList.append(list.get(i)); - stringList.append((i < listSize - 1) ? ", " : " "); + if (i < listSize - 1) { + stringList.append(", "); + } } return stringList.toString();