房间数据库未保存在列表中
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您应该添加回调或将插入的数据放入数据库中进行测试。
还要确保您在模拟器中而不是在计算机中使用数据库文件。这是一个很常见的错误。
问题是,当我打开片段时,来自数据库的数据没有出现在 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您应该添加回调或将插入的数据放入数据库中进行测试。
还要确保您在模拟器中而不是在计算机中使用数据库文件。这是一个很常见的错误。