DatePickerDialogを使ったのが初めてで、そこで取得した値をsqliteに保存する方法はどうしたもんかなと。また、取得した値をDatePickerDialogに反映させる方法も、どうしたもんかなと。
面倒なので、まんま私が書いたコード載せます。
簡単にいうと、
DatePickerDialogに設定する場合は、
SimpleDateFormatで指定したフォーマット(yyyy-MM-dd)に合わせてDateに変換します。
DBに保存する場合は、
SimpleDateFormatで指定したフォーマット(yyyy-MM-dd)の形式の文字列を保存します。
fmt.format(date)で、”2011-03-02″のような文字列が取得できます。
private void dateEdit(final long id, String strdate) {
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
Date date;
try {
if (strdate == null || strdate.equals("")) {
date = new Date();
} else {
date = fmt.parse(strdate);
}
DatePickerDialog dialog = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Date date = new Date(year - 1900, monthOfYear, dayOfMonth);
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
mDBHelper.updateDate(id, fmt.format(date));
// カーソルを再取得して更新をListViewに反映させる
mCursor = mDBHelper.getAll();
mAdapter.changeCursor(mCursor);
}
},
date.getYear() + 1900,
date.getMonth(),
date.getDate());
// クリアする
dialog.setButton(DialogInterface.BUTTON_NEUTRAL,
getString(R.string.txt_clear),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
mDBHelper.updateDate(id, "");
// カーソルを再取得して更新をListViewに反映させる
mCursor = mDBHelper.getAll();
mAdapter.changeCursor(mCursor);
}
});
dialog.show();
} catch (ParseException e) {
e.printStackTrace();
}
}
