Daten im lokalisierten Format auf Android anzeigen

Ich baue derzeit meine erste App für Android. Was ich habe Probleme mit der Speicherung und lokalisierte Anzeige von Daten in Verbindung mit einem SimpleCursorAdapter . Ich habe eine Klasse, die den Zugriff auf eine SQLitedatabase mit drei Tabellen kapselt. Diese Klasse kümmert sich um die Speicherung aller Daten im ISO-Format ("yyyy-MM-dd"). Wenn die Datumswerte aus der Datenbank gelesen und auf dem Bildschirm angezeigt werden, möchte ich sie in einem lokalisierten Format formatieren. Hier ist der Ansatz, mit dem ich gekommen bin. Es benutzt einen ViewBinder , um die Formatierung zu machen:

 adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() { @Override public boolean setViewValue(View view, Cursor cursor, int columnIndex) { if (view.getId() == R.id.text1) { ((TextView) view).setText(getDateFormatView().format( parseDatabaseDate(cursor.getString(columnIndex)))); return true; } else if (view.getId() == R.id.text2) { ((TextView)view).setText( cursor.getString(columnIndex)); return true; } else { return false; } } }); 

getDateFormatView() erstellt ein SimpleDateFormat Objekt mit einem Muster, das aus SimpleDateFormat gelesen wird. parseDatabaseDate() führt das Parsen des Datums aus der Datenbank mit einem SimpleDateFormat , das mit einem konstanten Muster yyyy-MM-dd .

Obwohl dieser Code ganz gut funktioniert, frage ich mich, ob es einen besseren Weg gibt, das zu tun. Was ich nicht mag, ist das, was ich brauche

  • Zwei SimpleDateFormat Objekte (eine wird in parseDatabaseDate() verwendet, um den Datumsstring aus der SQLiteDatabase zu analysieren, der andere wird verwendet, um den Wert zu formatieren)
  • Ein java.util.Date Objekt, das erstellt wird dann sofort weggeworfen
  • Ziemlich viel (meiner Meinung nach) boilerplate code.

Deshalb frage ich: Gibt es einen besseren Weg, um Termine im lokalisierten Format anzuzeigen?

  • Chinesische Gebietsschema-Werte-zh_CN gibt einen Fehler auf Eclipse
  • Android lokalisieren es-r419
  • Android-Locale-Unterstützung für indische Regionalsprachen (Kannada, Tamil, etc.)
  • Force locale für Android-Geschmack mit resConfig
  • Android-Anwendung funktioniert nicht in China
  • Suche im Spielmarkt mit lokalisiertem Anwendungsname
  • Lint: Wie man ignoriert "<key> ist nicht in <language>" Fehlern übersetzt?
  • Android: Bezug auf ressources in benutzerdefinierten xml
  • One Solution collect form web for “Daten im lokalisierten Format auf Android anzeigen”

    Wenn du das Parsing überspringen möchtest, könntest du stattdessen das Datum als lange speichern. Dann könntest du einfach ein neues Date-Objekt mit dem long mit Null-Parsing erstellen.

    Dies ist nicht direkt auf Ihre Frage bezogen, aber: Eine Sache, die Sie vielleicht in Erwägung ziehen möchten, ist android.text.format.DateFormat für das Erhalten Ihrer Datumsformatierer. Auf diese Weise formatieren Sie Ihre Termine / Zeiten an die Gebietsschemaeinstellungen des Benutzers anstelle der eigenen Voreinstellungen. Es könnte auch Ihren Code einfacher machen, da du kein eigenes SimpleDateFormat mehr erstellen musst.

    Mit diesen beiden Dingen im Auge, können Sie loswerden die Anrufe zu Ihren eigenen Methoden:

     ((TextView) view).setText(android.text.format.DateFormat.getDateFormat().format(new Date(cursor.getString(columnIndex)))); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.