在会议室数据库中使用SingleDateAndTimePicker

时间:2019-03-20 16:07:35

标签: android datetimepicker android-room

我有用于会议室数据库的代码...

ShiftLog.java

@Entity
public class ShiftLog {
    @PrimaryKey
    @ColumnInfo(name = "user_uid")
    private int userUid;

    @ColumnInfo(name = "shift_start")
    private SingleDateAndTimePicker shiftStart;

    @ColumnInfo(name = "shift_end")
    private SingleDateAndTimePicker shiftEnd;

但是,我收到错误Cannot figure out how to save this field into database. You can consider adding a type converter for it。如何为此自定义类使用类型转换器?我从https://github.com/florent37/SingleDateAndTimePicker

参加了自定义课程

2 个答案:

答案 0 :(得分:0)

SingleDateAndTimePicker是一个UI组件,您无需将其保存在数据库中。

这是来自SingleDateAndTimePicker repository

的示例
new SingleDateAndTimePickerDialog.Builder(context)
        //.bottomSheet()
        //.curved()
        //.minutesStep(15)
        //.displayHours(false)
        //.displayMinutes(false)
        //.todayText("aujourd'hui")
        .displayListener(new SingleDateAndTimePickerDialog.DisplayListener() {
                            @Override
                            public void onDisplayed(SingleDateAndTimePicker picker) {
                                 //retrieve the SingleDateAndTimePicker
                            }
                        })

        .title("Simple")
        .listener(new SingleDateAndTimePickerDialog.Listener() {
            @Override
            public void onDateSelected(Date date) {

            }
        }).display();

您可以使用侦听器检索 Date 对象并将其保存到数据库中,而不是 SingleDateAndTimePicker

要使用“房间”管理日期属性,请参见official documentation

答案 1 :(得分:0)

SingleDateAndTimePicker是一个视图,而不是数据。因此,您不想将其用作ShiftLog上的属性,而要使用用户将使用Date

选择的SingleDateAndTimePicker
@Entity
public class ShiftLog {
    ...

    @ColumnInfo(name = "shift_start")
    private Date shiftStart;

   ...

日期将来自SingleDateAndTimePickerDialog.Listener(有关详细信息,请参见该库的自述文件中的“用法”部分)。

TypeConverter对象仍然需要Date,因为这被认为是复杂数据。 Here是有关如何做到这一点的教程。另外,他们在该教程中使用的示例适用于Date类!