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 .

  • Wie kann man herausfinden, welche innere anonyme Klasse durch einen Klassennamen angegeben ist?
  • Sollte ich `Thread.currentThread () machen. Interrupt ()` before `werfe neue InterruptedIOException ()`?
  • Visual Studio 2015 Xamarin-Bereitstellung fehlgeschlagen ohne Fehlermeldung
  • OkHttp - Logs aktivieren
  • Wie kann man die Hintergrundfarbe eines Knopfes auf den Standard zurücksetzen?
  • Android-Service android.os.BinderProxy-Fehler
  • 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?

  • Java.lang.IllegalStateException: RecyclerView hat keinen LayoutManager in Fragment
  • Android 2.3 WiFi Hotspot API
  • Mit listpreference und bekommen die Taste funktioniert aber keine OK-Taste
  • Android Studio benötigt JDK 7 für Android-L Mac
  • Getting "Fragment hat keine Ansicht" nach der Aufnahme von anderen Fragment ohne UI
  • Ein Bild aus der Galerie aus dem Picasa // Google + synchronisierte Ordner funktioniert nicht
  • 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.