Ich versuche, eine Liste aller verfügbaren Länder und Währungen gleichzeitig zu erhalten. Ich möchte, dass die Ländernamen auf dem Drehfeld angezeigt werden, und wenn der Benutzer das Land auswählt, wird das Währungssymbol zurückgegeben. Meine Methode funktioniert, aber ich denke, es ist sehr schlecht Übung, weil es dauert 3-2 Sekunden, um die Daten zu laden. Ich habe es wie folgt aus:Wie erhält man Länder und Währungen?
public ArrayList<CurrencyModel> getCountriesAndCurrency(){
ArrayList<CurrencyModel> result = new ArrayList<>();
ArrayList<Locale> list = new ArrayList<>(Arrays.asList(Locale.getAvailableLocales()));
for (int i = 0; i <list.size(); i++) {
String country = list.get(i).getDisplayCountry();
try {
Locale pickedLocal = new Locale(list.get(i).getISO3Language(), list.get(i).getCountry());
String code = Currency.getInstance(pickedLocal).getCurrencyCode();
Currency currency = Currency.getInstance(code);
String currencySymbol = currency.getSymbol(pickedLocal);
if(currencySymbol.length()>1){
currencySymbol = currency.getSymbol();
}
result.add(new CurrencyModel(list.get(i), country, currencySymbol));
} catch (Exception e) {
}
}
Collections.sort(result, new CustomComparator());
ArrayList<CurrencyModel> finalRes = new ArrayList<>();
for (int i = 0; i < result.size(); i++) {
try {
if(!result.get(i).getCountryName().equals(result.get((i+1)).getCountryName())) {
finalRes.add(result.get(i));
}
}catch (Exception e){}
}
Collections.sort(finalRes, new CustomComparator());
return finalRes;
}
public class CustomComparator implements Comparator<CurrencyModel> {
@Override
public int compare(CurrencyModel o1, CurrencyModel o2) {
return o1.getCountryName().compareTo(o2.getCountryName());
}
}
Currency Objekt = locale locale, String country, String currency.
gibt es eine bessere Lösung für diese Aktion?
Sie können es in sharedPreferences speichern/zwischenspeichern, wenn Sie es zuerst erhalten, wenn es zu viel Zeit braucht. – Devrim
Ich habe die Antwort mit mehr Verbesserungen aktualisiert (angenommen) bitte überprüfen und die Ergebnisse zurück, wenn Sie Verbesserungen hatten – Yazan