現在、Android用の最初のアプリを作成しています。私が問題を抱えているのは、に関連する日付の保存とローカライズされた表示ですSimpleCursorAdapter
。SQLitedatabase
3つのテーブルへのアクセスをカプセル化するクラスがあります。このクラスは、すべての日付をISO形式( "yyyy-MM-dd")で保存します。日付値がデータベースから読み取られて画面に表示されるときに、ローカライズされた形式でフォーマットする必要があります。これが私が思いついたアプローチです。を使用ViewBinder
してフォーマットを行います。
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()
SimpleDateFormat
から読み取られるパターンを持つオブジェクトを作成しますstrings.xml
。定数パターンを使用して構築さparseDatabaseDate()
れたデータベースからの日付の解析を行います。SimpleDateFormat
yyyy-MM-dd
このコードは問題なく機能しますが、それを行うためのより良い方法があるかどうか疑問に思っています。私が好きではないのは、私が必要としていることです:
- 2つの
SimpleDateFormat
オブジェクト(1つはparseDatabaseDate()
からの日付文字列を解析するために使用され、もう1つはSQLiteDatabase
値をフォーマットするために使用されます) java.util.Date
作成されてすぐに破棄されるオブジェクト- (私の意見では)かなり多くの定型コード。
だから私は尋ねています:ローカライズされた形式で日付を表示するより良い方法はありますか?