Отображение дат в локализованном формате на Android

Я в настоящее время создаю свое первое приложение для Android. То, из-за чего я испытываю затруднения, является устройством хранения данных и локализованным дисплеем дат в связи с a SimpleCursorAdapter. У меня есть класс, который инкапсулирует доступ к SQLitedatabase с тремя таблицами. Этот класс заботится о хранении всех дат в формате ISO ("yyyy-MM-dd"). Когда значения даты считаны из базы данных и отображены на экране, я хочу, чтобы они были отформатированы в локализованном формате. Вот подход, который я придумал. Это использует a 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() создает a SimpleDateFormat объект с шаблоном, который читается из strings.xml. parseDatabaseDate() делает парсинг даты от базы данных с a SimpleDateFormat это создается с помощью постоянного шаблона yyyy-MM-dd.

Хотя этот код работает просто великолепно, я задаюсь вопросом, существует ли лучший способ сделать это. То, что я не люблю, - то, что мне нужно:

  • два SimpleDateFormat объекты (каждый используется в parseDatabaseDate() для парсинга строки даты от SQLiteDatabase, другой используется для форматирования значения),
  • a java.util.Date объект, который создается затем выброшенный сразу
  • довольно много (по-моему), шаблонного кода.

Так вот почему я спрашиваю: существует ли лучший способ отобразить даты в локализованном формате?

22
задан Luksprog 3 June 2012 в 07:19
поделиться

1 ответ

Вы хотите пропустить расставание, вы можете хранить дату в долгом случае. Тогда вы можете просто создать новый объект даты, используя длинные с нулевым разбором.

Это не связано напрямую с вашим вопросом, но: одна вещь, которую вы можете захотеть рассмотреть возможность использования, - это Android.Text.Format.dateFormat для получения ваших даты форматирования. Таким образом, вы отформатируете свои даты / время в настройки локали пользователя вместо собственных пресетов. Это также может сделать ваш код проще, так как вам больше не нужно создавать свой собственный SimpleDateFormat.

С учетом этих двух вещей вы можете избавиться от вызовов на свои собственные методы:

((TextView) view).setText(android.text.format.DateFormat.getDateFormat().format(new Date(cursor.getString(columnIndex))));
43
ответ дан 29 November 2019 в 04:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: