让 ObjectBox 与 LiveData 和 Kotlin 一起工作
Getting ObjectBox to work with LiveData and Kotlin
我有一些使用 Room 的工作代码,我的存储库中有一个函数如下所示:
fun getCharacters(context: Context): LiveData<List<CharacterEntity>> {
return db.characterDAO().getAll()
}
我的 ViewModel 看起来像这样(只是 returning 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()
}
但是查询类型不匹配 return“ObjectBoxLiveData 而不是列表...但是我正在尝试查询所有字符 objects/documents,但是我到底应该怎么做建造这个?
谢谢
索伦
无需指定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())
}
我有一些使用 Room 的工作代码,我的存储库中有一个函数如下所示:
fun getCharacters(context: Context): LiveData<List<CharacterEntity>> {
return db.characterDAO().getAll()
}
我的 ViewModel 看起来像这样(只是 returning 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()
}
但是查询类型不匹配 return“ObjectBoxLiveData 而不是列表...但是我正在尝试查询所有字符 objects/documents,但是我到底应该怎么做建造这个?
谢谢
索伦
无需指定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())
}