まずはエフェクトダイアグラム
サードパーティのライブラリを参考にする方法
具体的な手順は次のとおりです (例として 2 番目のレンダリングを取り上げます)。
- build.gradle で導入 (下位バージョンの AS はコンパイルによって参照されますが、上位バージョンはコンパイルを放棄して実装を使用します)
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
- 次に、オブジェクトを定義します
private SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private TimePickerDialog pickerdialog;
- XML コントロールについて
overTime = (TextView) findViewById(R.id.tv_overTime);
- 次に、onCreate関数で呼び出します
overTime.setOnClickListener( new OnPickOverYearClickListener(this,overTime));
- 次に、onCreat 関数の外側で OnPickOverYearClickListener(this,overTime) を実装します。
public class OnPickOverYearClickListener implements View.OnClickListener, OnDateSetListener {
public OnPickOverYearClickListener(AddActivity addActivity, TextView overTime) {
}
@Override
public void onClick(View view) {
pickerdialog = new TimePickerDialog.Builder().setType(Type.ALL).setCallBack(this).
setTitleStringId("请选择时间").setCurrentMillseconds(System.currentTimeMillis())
.setThemeColor(getResources().getColor(R.color.green))
.setWheelItemTextSize(15).build();
pickerdialog.show(getSupportFragmentManager(),"abc");
}
@Override
public void onDateSet(TimePickerDialog timePickerView, long millseconds) {
//显示overTime
overTime.setText(getDateToString(millseconds));
// Toast.makeText(this, "你选择的时间:"+getDateToString(millseconds), Toast.LENGTH_SHORT).show();
//将选择的时间(此时是秒的形式)转换成TimeStamp存进数据库
signOverTime = getDateToTimeStamp(millseconds);
}
public String getDateToString(long time){
Date d = new Date(time);
return sf.format(d);
}
public Timestamp getDateToTimeStamp(long time){
Timestamp timestamp = new Timestamp(time);
System.out.println("d----"+timestamp);
return timestamp;
}
}
注: initTimeDialog(Type.ALL) 内の Type.ALL を、年月のみ、年月日、時分割など、他の型に置き換えることができるので、最初のレンダリングを実現する必要がある場合は、 Type .ALL を Type.YEAR に置き換えるだけです。
添付資料: 同じActivityに2つのDateTimePickerを実装する必要がある場合は、OnPickOverYearClickListener(this,overTime)の関数名を変更して実装するだけです。年だけが必要で、年を int に変更してデータベースに保存する場合は、goToString 関数 (今回は、実際には xx 形式の 1 月 1 日の 0:00 です) を String に変換し、次に String.subString(0,4) を使用して最初の 4 桁 (つまり、年) を取得してから変換します。 int型へ
。