Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Room Database callback()不会在创建数据库时的第一次安装中预填充数据库_Android_Database_Kotlin_Callback_Android Room - Fatal编程技术网

Android Room Database callback()不会在创建数据库时的第一次安装中预填充数据库

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

我试图在我的ViewModel中以“AttendanceInfo的实时数据列表”的形式获取数据 当我尝试登录时

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