以下是一个解决Android中使用Kotlin和预填充Room数据库的示例:
@Entity(tableName = "users")
data class User(
@PrimaryKey val id: Int,
val name: String,
val age: Int
)
@Dao
interface UserDao {
@Query("SELECT * FROM users WHERE id = :userId")
fun getUserById(userId: Int): User
}
@Database(entities = [User::class], version = 1)
abstract class UserDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
@DatabasePrepopulate
class UserDatabasePrepopulate : PrepopulateCallback {
companion object {
private val USER_DATA = listOf(
User(1, "John", 25),
User(2, "Emma", 30),
User(3, "Mike", 35)
)
}
override fun prepopulate(database: SupportSQLiteDatabase) {
USER_DATA.forEach { user ->
val values = ContentValues()
values.put("id", user.id)
values.put("name", user.name)
values.put("age", user.age)
database.insert("users", OnConflictStrategy.IGNORE, values)
}
}
}
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
val database = Room.databaseBuilder(
applicationContext,
UserDatabase::class.java,
"user-database"
)
.addCallback(UserDatabasePrepopulate())
.build()
// 其他操作...
}
}
现在,当应用启动时,Room数据库将会自动创建并预填充用户数据。您可以通过UserDao接口的方法来访问和操作数据库。例如,使用getUserById方法获取特定用户的信息。
注意:以上示例假设您已经正确设置了Android开发环境和相关依赖项。
上一篇:Android - Kotlin - 如何让相机将位图缩略图放置在与按钮所在的相同列表中
下一篇:Android - Kotlin Sealed class with Rxkotlin filter(使用Rxkotlin过滤的Kotlin密封类)