会议室数据库未保存在列表中



问题是,当我打开片段的数据从数据库不出现在Recyclerview,当我调试我发现我的列表大小是0后打开片段

我认为我的存储库,dao,适配器或活动类有问题,我在stackoverflow上问了我的建议,但它仍然没有工作。

如果你对之前的问题感到好奇(我在答案中做了所有的事情)所以我猜也许我建立数据库和创建实体是错误的。

这是我的数据结构看起来像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数据库浏览器我创建了2个表Plant和Plant_Category。现在我可能会想,我可能没有把Entity类写对。

植物类:

@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类:

@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 = "",){

}

数据库类:


@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'实体中会更容易。

Database类一切正常。也许你应该添加回调或在数据库中插入数据进行测试。

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

最新更新