diff --git a/src/org/thoughtcrime/securesms/database/loaders/CountryListLoader.java b/src/org/thoughtcrime/securesms/database/loaders/CountryListLoader.java index 24375b4ce3..40f66cafaa 100644 --- a/src/org/thoughtcrime/securesms/database/loaders/CountryListLoader.java +++ b/src/org/thoughtcrime/securesms/database/loaders/CountryListLoader.java @@ -1,6 +1,14 @@ package org.thoughtcrime.securesms.database.loaders; +import android.content.Context; +import androidx.loader.content.AsyncTaskLoader; + +import com.google.i18n.phonenumbers.PhoneNumberUtil; + +import org.whispersystems.signalservice.api.util.PhoneNumberFormatter; + +import java.text.Collator; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -8,14 +16,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; -import android.content.Context; -import androidx.loader.content.AsyncTaskLoader; - - -import com.google.i18n.phonenumbers.PhoneNumberUtil; -import org.whispersystems.signalservice.api.util.PhoneNumberFormatter; - -public class CountryListLoader extends AsyncTaskLoader>> { +public final class CountryListLoader extends AsyncTaskLoader>> { public CountryListLoader(Context context) { super(context); @@ -24,10 +25,10 @@ public class CountryListLoader extends AsyncTaskLoader> loadInBackground() { Set regions = PhoneNumberUtil.getInstance().getSupportedRegions(); - ArrayList> results = new ArrayList>(regions.size()); + ArrayList> results = new ArrayList<>(regions.size()); for (String region : regions) { - Map data = new HashMap(2); + Map data = new HashMap<>(2); data.put("country_name", PhoneNumberFormatter.getRegionDisplayName(region)); data.put("country_code", "+" +PhoneNumberUtil.getInstance().getCountryCodeForRegion(region)); results.add(data); @@ -39,9 +40,19 @@ public class CountryListLoader extends AsyncTaskLoader> { + + private final Collator collator; + + RegionComparator() { + collator = Collator.getInstance(); + collator.setStrength(Collator.PRIMARY); + } + @Override public int compare(Map lhs, Map rhs) { - return lhs.get("country_name").compareTo(rhs.get("country_name")); + String a = lhs.get("country_name"); + String b = rhs.get("country_name"); + return collator.compare(a, b); } } }