LiveData在Jetpack合成Android上返回空值

mgdq6dx1  于 2023-02-20  发布在  Android
关注(0)|答案(1)|浏览(100)

DAO

@Query("SELECT COUNT(category) FROM todolist_table")
    fun getAllTaskCount() : LiveData<Int>

回购

suspend fun getAllTaskCount() : LiveData<Int> {
       return todoDao.getAllTaskCount()
    }

视图模型

fun getAllTaskCount(){
         viewModelScope.launch(Dispatchers.IO) {
             repository.getAllTaskCount()
         }
    }

视图

val viewModel = ToDoViewModel(application = LocalContext.current.applicationContext as Application)

  val taskCount = viewModel.getAllTaskCounter()

我想从数据库中计数类别,但返回null

fquxozlt

fquxozlt1#

因为它是LiveData,所以你必须在View中观察它,这在Jetpack compose中有点不同(与Fragments相比)。
你可以做的是在viewModel中声明一个变量,它包含对数据库的引用,如下所示:

val tasks = repo.getAllTaskCount()

在视图中,您可以观察更改并对任务执行某些操作:

val tasks = viewModel.tasks.observeAsState()

可能值得查看文档的这一部分,它更深入地介绍了状态并进行了观察:https://developer.android.com/jetpack/compose/state

相关问题