gpt4 book ai didi

kotlin - 使ObjectBox与LiveData和Kotlin一起使用

转载 作者:行者123 更新时间:2023-12-02 13:35:33 28 4
gpt4 key购买 nike

我有一些使用Room的工作代码,在我的存储库中有一个如下所示的函数:

fun getCharacters(context: Context): LiveData<List<CharacterEntity>> {
return db.characterDAO().getAll()
}

我的ViewModel看起来像这样(只是返回LiveData):
class CharactersViewModel(application: Application) : AndroidViewModel(application) {

val characters = RickAndMortyRepository.getInstance(application).getCharacters(application)

}

现在,我想将其转换为使用ObjectBox进行测试,但是我无法解决这个问题……我尝试将存储库方法更改为:
fun getCharacters(context: Context): ObjectBoxLiveData<List<Character>> {
val characters = ObjectBox.boxStore.boxFor(Character::class.java)
return ObjectBoxLiveData<List<Character>>(characters.query().build())
//return db.characterDAO().getAll()
}

但是有一个类型不匹配,因为查询返回“ObjectBoxLiveData而不是列表...”,但是我试图查询所有的Character对象/文档,但是我到底应该如何构建呢?

谢谢
索伦

最佳答案

无需指定ObjectBoxLiveData<List<Character>>。通过查看源代码,您可以看到ObjectBoxLiveData被定义为ObjectBoxLiveData<T> extends LiveData<List<T>>。所以做:

fun getCharacters(context: Context): ObjectBoxLiveData<Character> {
val characters = ObjectBox.boxStore.boxFor(Character::class.java)
return ObjectBoxLiveData<Character>(characters.query().build())
}

完整文档: https://docs.objectbox.io/android/livedata-arch.-comp

ViewModel示例: https://github.com/objectbox/objectbox-examples/blob/780563ccb46d3198c70669f91910eaaea5ed72c7/android-app-arch/src/main/java/io/objectbox/example/NoteViewModel.java

关于kotlin - 使ObjectBox与LiveData和Kotlin一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58031649/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com