小编Jon*_*ona的帖子

使用 WorkManager 更新 Room 中的数据库条目

我正在尝试WorkManager在 Android 中使用,因为到目前为止我已经使用AsyncTask. 我正在尝试更新Room database. 我创建了一个类Repository来在后台执行该过程,但我不知道这是否是正确的编码方式。我也有点困惑如何在 userViewModel 中调用该方法。

这是我的代码:

在存储库中:

inner class Test(ctx: Context, params: WorkerParameters) : Worker(ctx, params) {

    override fun doWork(): Result {
        fun updateUser(userId : Int , userName :String , userLastname: String){
            userDao.updateUser(userId, userName, userLastname)
        }
        return Result.success()
    }
}
Run Code Online (Sandbox Code Playgroud)

在视图模型中:

private val workManager: WorkManager = WorkManager.getInstance()
fun updateUser(userID: Int, userName: String, userLastname: String)    {
    workManager.enqueue(OneTimeWorkRequest.from(Repository.Test::class.java))

}
Run Code Online (Sandbox Code Playgroud)

也许这不是使用 WorkManager 的正确方法,所以如果有人能帮助我,我将不胜感激。

android kotlin android-room android-jetpack android-workmanager

6
推荐指数
1
解决办法
4862
查看次数

e: [kapt] 发生异常:java.lang.IllegalArgumentException: intcannot be convert to an Element

我正在尝试在我的 android 应用程序中实现 Room。我正在尝试从 API 获取数据并将它们保存在本地数据库中。但是当我运行应用程序时发生了这个错误

e: [kapt] 发生异常:java.lang.IllegalArgumentException: intcannot be convert to an Element

这是我的数据库类:

@Database(entities = [
    (User::class)],
        version = 1, exportSchema = false)
abstract class UserDatabase : RoomDatabase() {


    abstract fun userDao(): UserDao

    companion object {

        @Volatile
        private var INSTANCE: UserDatabase? = null

        fun getDatabase(context: Context): UserDatabase {

            if (INSTANCE == null){
                synchronized(this){
                    INSTANCE = Room.databaseBuilder(
                            context.applicationContext,
                            UserDatabase::class.java,
                            "user_database")
                            .build()
                }
            }
            return INSTANCE!!
        }
    }


}

Run Code Online (Sandbox Code Playgroud)

这是我的存储库:

class Repository(application: Application) {


    private var mUserDao: UserDao

init …
Run Code Online (Sandbox Code Playgroud)

android kotlin kapt android-room

2
推荐指数
1
解决办法
3260
查看次数

使用for循环在Kotlin中填充列表

一段时间以来,我才刚刚开始学习如何在Kotlin中进行开发。我正在处理此事情,我正在尝试将列表解析为另一种类型的列表。基本上,它们是同一件事,但名称不同。但是,当我尝试使用从函数中作为参数给出的列表中获取的数据填充新列表时,该列表仅填充了第一个对象。

这是我的功能:

fun convertRoomClass(course: List<Course>) : List<Courses> {

    lateinit var list : List<Courses>


    course.forEach {
        val id = it.pathID
        val name = it.pathName
        val desc = it.pathDescription

        val crs : Courses = Courses(id, name!!, desc!!)

         list = listOf(crs)
    }

    return list
}
Run Code Online (Sandbox Code Playgroud)

android for-loop list kotlin

0
推荐指数
2
解决办法
2509
查看次数