Android Room Database callback()不会在创建数据库时的第一次安装中预填充数据库
我试图在我的ViewModel中以“AttendanceInfo的实时数据列表”的形式获取数据 当我尝试登录时Android Room Database callback()不会在创建数据库时的第一次安装中预填充数据库,android,database,kotlin,callback,android-room,Android,Database,Kotlin,Callback,Android Room,我试图在我的ViewModel中以“AttendanceInfo的实时数据列表”的形式获取数据 当我尝试登录时 Log.i("d", last30dayes.value?.get(0).toString()) 它给了我:java.lang.IndexOutOfBoundsException:索引:0,大小:0 我假设发生这种情况是因为在创建数据库时,我的数据库最初没有填充 但为什么会这样?问题在哪里? */ 在我用新的AVD将应用程序从android 10升级到androi
Log.i("d", last30dayes.value?.get(0).toString())
它给了我:java.lang.IndexOutOfBoundsException:索引:0,大小:0
我假设发生这种情况是因为在创建数据库时,我的数据库最初没有填充
但为什么会这样?问题在哪里?
*/
在我用新的AVD将应用程序从android 10升级到android 10+以及
还需要编写更多的代码
这是我的数据库:
abstract val employeInfoDAO: EmployeInfoDAO
companion object {
@Volatile
private var INSTANCE: EmployeInfoDatabase? = null
fun getInstance(context: Context): EmployeInfoDatabase {
synchronized(this) {
var instance = INSTANCE
if (instance == null) {
instance = Room.databaseBuilder(
context.applicationContext, EmployeInfoDatabase::class.java,
"employes_attendance_database"
).addCallback(object : RoomDatabase.Callback(){
override fun onCreate(db: SupportSQLiteDatabase) {
super.onCreate(db)
Executors.newSingleThreadExecutor().execute{
instance?.employeInfoDAO?.insertDateList(DateDataGenerator.addDate())
}
}
}).build()
INSTANCE = instance
}
return instance
}
}
}
这是我的日期数据生成器类:
companion object {
fun addDate(): List<AttendanceInfo>{
val dt = LocalDate.now()
val formatter = DateTimeFormatter.ofPattern("dd,,E,,MMMM, yyyy")
val l = mutableListOf<AttendanceInfo>()
for (i in 30 downTo 0){
val date = dt.minusDays(i.toLong()).format(formatter)
l += AttendanceInfo(0, mutableListOf(), mutableMapOf(),date)
}
return l.toList()
}
}
伴生对象{
fun addDate():列表{
val dt=LocalDate.now()
val formatter=DateTimeFormatter.of模式(“dd,E,MMMM,yyyy”)
val l=可变列表(0)
对于(i在30到0之间){
val date=dt.minusDays(i.toLong()).format(格式化程序)
l+=AttendanceInfo(0,mutableListOf(),mutableMapOf(),日期)
}
返回l.toList()
}
}
//这是我的数据类AttendanceInfo(
@PrimaryKey(autoGenerate=true)
val date_id:Long=0L,
@ColumnInfo(name=“当前列表”)
@字段:类型转换器(ListConverter::class)
val presentEmploye:可变列表,
@ColumnInfo(name=“额外地图”)
@字段:类型转换器(MapConverter::class)
val extra:MutableMap,
val日期:字符串
您确定这是房间异常吗?请放入完整跟踪,如果您使用的话,它可能是recyclerView
异常。这不可能,因为我以前在第一次运行时填充数据库时使用过recyclerView部件,但当我重新安装它时,它不起作用。我不知道为什么。发布完整堆栈跟踪
@PrimaryKey(autoGenerate = true)
val date_id: Long = 0L,
@ColumnInfo(name = "present_list")
@field:TypeConverters(ListConverter::class)
val presentEmploye: MutableList<Long>,
@ColumnInfo(name = "extra_map")
@field:TypeConverters(MapConverter::class)
val extra : MutableMap<Long,Int>,
val date_: String