房间数据库未保存在列表中

Room Database doesn't save in the list

问题是,当我打开片段时,来自数据库的数据没有出现在 Recyclerview 中,当我调试时,我发现打开片段后我的列表大小为 0

我认为我的存储库、dao、适配器或 activity class 我在 Whosebug 上询问了我的建议,但它仍然没有用。

如果你对之前的内容感到好奇question(我把答案都做了) 所以猜想也许我建立了数据库并创建了错误的实体。

下面是我的数据结构在 JSON 格式中的样子

[
"plant_id":1
"plant_name": 'Benny'
"plant_image":'some url'
 "plant_category" : {
  "plant_type_id":1
  "plant_type_name": 'Aloe'
   "plant_type_water" : '1 day per week'
   "plant_type_details" : 'poisonous for cats'}
]

所以在 Sqlite DB Browser 中我创建了 2 个表 Plant 和 Plant_Category。现在我可能认为我可能没有正确完成实体 class。

工厂class:

@Entity(tableName = "Plant")
data class Plant(

        @PrimaryKey var plant_id:Long,
        @ColumnInfo (name="plant_name") var name: String,
        @Embedded var type: Plant_Category,
        @ColumnInfo(name= "plant_image") var image: Int,


        ) {

}

Plant_Category Class:

@Entity(tableName = "Plant_Category")
data class Plant_Category(

        @PrimaryKey var plant_type_id: Int =0,
        @ColumnInfo(name="plant_type_name") var type:String ="",
        @ColumnInfo(name="plant_type_water")var water_time: String ="",
        @ColumnInfo(name="plant_type_details")var details: String = "",){
    
}

数据库Class:


@Database(entities = [Plant::class, Plant_Category::class], version = 1)
abstract class PlantDatabase:RoomDatabase() {
    abstract fun plantDao(): PlantOperations
    abstract fun plantCategoryDao(): PlantCategoryOperations

    companion object {
        private var INSTANCE: PlantDatabase? = null
 

        fun getDatabase(context: Context): PlantDatabase {
            if (INSTANCE == null) {

                INSTANCE = Room.databaseBuilder(
                    context.applicationContext,
                    PlantDatabase::class.java, DB_NAME // directory that leads to database
                ) 
                    .fallbackToDestructiveMigration()
                    .build()
            }


            return INSTANCE!!
        }
    }
}

我对房间数据库还很陌生,我有可能错过了一些重要的东西。但我会很感激你的帮助

首先,合并 'PlantCategory' 中的元素并将它们添加到 'Plants' 实体会更容易。

您的数据库一切正常class.Maybe您应该添加回调或将插入的数据放入数据库中进行测试。

还要确保您在模拟器中而不是在计算机中使用数据库文件。这是一个很常见的错误。