Autore Topic: Currency e SharedPreferences  (Letto 283 volte)

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Currency e SharedPreferences
« il: 13 Giugno 2014, 18:33:52 CEST »
0
Da 2 giorni stò cercando di risolvere un problema, vado subito al sodo.

Ho una ListView popolata da stringhe che rappresentano le varie "valute", quando viene selezionata una, la memorizzo nella  SharedPreference per poi utilizzarla nelle varie TextView...in questo modo, ad esempio:
Codice (Java): [Seleziona]
SharedPreferences prefs = getSharedPreferences("currency", MODE_PRIVATE);
                                if (itemValue.equals(getString(R.string.c))){
                                NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.US);
                                prefs.edit().putString("currency_code", nf.getCurrency().getCurrencyCode()).commit();
                                finish();
                                }
fin qui tutto ok.

Poi quando vado a caricarla faccio così:
inizializzo nell'onCreate la Shared
Codice (Java): [Seleziona]
                sharedPrefs = getActivity().getSharedPreferences("currency", Context.MODE_PRIVATE);poi nel metodo imposto la valuta alla TextView:
Codice (Java): [Seleziona]
String defaultCurrency = Currency.getInstance(Locale.getDefault()).getCurrencyCode();
NumberFormat ca = NumberFormat.getCurrencyInstance();
ca.setCurrency(Currency.getInstance(sharedPrefs.getString("currency_code", defaultCurrency)));
String valore = ca.format(valoredouble );
tvT.setText(valore );
a questo punto il valore della TextView viene rappresentato così:
US$ 1.000,00
invece, in questo caso Locale.US dovrebbe essere così: $ 1,000.00
Forse il problema è il NumberFormat?
Grazie per l'aiuto

iClaude

  • Visitatore
Re:Currency e SharedPreferences
« Risposta #1 il: 16 Giugno 2014, 10:31:12 CEST »
0
Il simbolo che viene stampato dipende dalla Locale.  Ovvero se la locale di default è Locale.US allora ti stampera' il solo simbolo $; se invece, come nel tuo caso (hai usato infatti la Locale di default nel NumberFormat) , la Locale usata è  quella italiana allora stampera' il simbolo US$.
Questo comportando, che in apparenza può sembrare sbagliato, in realtà è quello più corretto. Infatti prova a guardare a questo link quanti Paesi usano il simbolo $ per la propria valuta: Autoextraction Prohibited
« Ultima modifica: 16 Giugno 2014, 10:38:53 CEST da iClaude »