在 Room 数据库中使用 SingleDateAndTimePicker
Use SingleDateAndTimePicker in Room database
我有房间数据库的代码...
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
。如何为这个自定义 class 使用类型转换器?我从 https://github.com/florent37/SingleDateAndTimePicker
中获取了自定义 class
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。
要使用 Room 管理日期属性,请参阅 official documentation
SingleDateAndTimePicker
是视图,不是数据。因此,您不想将其用作 ShiftLog
上的 属性,而是使用用户会选择使用 SingleDateAndTimePicker
的 Date
]
@Entity
public class ShiftLog {
...
@ColumnInfo(name = "shift_start")
private Date shiftStart;
...
日期来自 SingleDateAndTimePickerDialog.Listener
(有关详细信息,请参阅该库自述文件中的 "Usage" 部分)。
您仍然需要 TypeConverter
作为 Date
对象,因为这被认为是复杂的数据。 Here 是关于如何做到这一点的教程。作为奖励,他们在该教程中使用的示例是 Date
class!
我有房间数据库的代码...
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
。如何为这个自定义 class 使用类型转换器?我从 https://github.com/florent37/SingleDateAndTimePicker
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。
要使用 Room 管理日期属性,请参阅 official documentation
SingleDateAndTimePicker
是视图,不是数据。因此,您不想将其用作 ShiftLog
上的 属性,而是使用用户会选择使用 SingleDateAndTimePicker
Date
]
@Entity
public class ShiftLog {
...
@ColumnInfo(name = "shift_start")
private Date shiftStart;
...
日期来自 SingleDateAndTimePickerDialog.Listener
(有关详细信息,请参阅该库自述文件中的 "Usage" 部分)。
您仍然需要 TypeConverter
作为 Date
对象,因为这被认为是复杂的数据。 Here 是关于如何做到这一点的教程。作为奖励,他们在该教程中使用的示例是 Date
class!