В настоящее время я создаю свое первое приложение для Android. У меня возникают проблемы с хранением и локализованным отображением дат в связи с SimpleCursorAdapter
. У меня есть класс, который инкапсулирует доступ к SQLitedatabase
с тремя таблицами. Этот класс заботится о сохранении всех дат в формате 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
.
Хотя этот код работает очень хорошо, мне интересно, есть ли лучший способ сделать это. Мне не нравится то, что мне нужно:
- два объекта
SimpleDateFormat
(один используется вparseDatabaseDate()
для анализа строки даты изSQLitedatabase
, другой используется для форматирования значения) - a
java.util.Date
объект, который создается, затем отбрасывается немедленно - довольно много (на мой взгляд) шаблонного кода.
Итак, почему я спрашиваю: есть ли лучший способ отображать даты в локализованном формате?