techium

このブログは何かに追われないと頑張れない人たちが週一更新をノルマに技術情報を発信するブログです。もし何か調査して欲しい内容がありましたら、@kobashinG or @muchiki0226 までいただけますと気が向いたら調査するかもしれません。

Realm x DatePickerDialog x TimePickerDialog

Realm x DatePickerDialog x TimePickerDialog

概要

ユーザーに日時を入力させ、その情報を Realm で管理しやすいよう整形する。

日時入力

カレンダーアプリを参考に、

  • DatePickerDialog
  • TimePickerDialog

をそれぞれ用いる。

f:id:kfurue:20160403235432p:plainf:id:kfurue:20160403235441p:plain

こちら を参考に、以下のようにすればダイアログを表示でき、入力された日時を取得できる。

DatePickerDialog

// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);

DatePickerDialog datePickerDialog = new DatePickerDialog(InputActivity.this,
  new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year,
                          int monthOfYear, int dayOfMonth) {
      // ユーザーが入力完了した際に実行する処理を記述する
    }
  }, year, month, day);
datePickerDialog.show();

TimePickerDialog

// Use the current time as the default values for the picker
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);

TimePickerDialog timePickerDialog = new TimePickerDialog(InputActivity.this,
  new TimePickerDialog.OnTimeSetListener() {
    @Override
    public void onTimeSet(TimePicker view, int hourOfDay,
                          int minute) {
      // ユーザーが入力完了した際に実行する処理を記述する
    }
  }, hour, minute, false);
timePickerDialog.show();

DatePickerDialog, TimePickerDialog への入力結果を Realm に保存

先述の方法でユーザーの入力を受け取ることができる。

Realm で管理することを考えた時、対応しているデータ型 にある通り、Date であればそのまま扱える。

一方、上述の方法で取得できる値は、

int year, int monthOfYear, int dayOfMonth
int hourOfDay, int minute

となるのでこれらを Date に変換する。

GregorianCalendar calendar = new GregorianCalendar(year, monthOfYear, dayOfMonth, hourOfDay, minute);
Date date = calendar.getTime();

これで Realm で容易に扱うことができる。