将 a 包装MutableList
在其中一个LiveData
或MutableLiveData
这样的推荐方法是什么,以便可以修改列表并观察它所经历的变化?
我在 Room 中有一些相当短的表(<20 个项目)(它缓存从服务器检索到的值)。我想保留这些项目的可变子集;用作其他更大表的查询中的过滤器。我的想法是将 a 分配给MutableList
我的应用程序中的模型类,并通过将此类包装在MutableLiveData
或中使其可观察LiveData
。然后通过更新这些选择中的项目,我可以在大表上触发必要的查询。
目前我的代码具有以下结构,我在我的问题中将其剥离为我认为相关的内容。最终我想keyset
在更复杂的查询中使用多个。我的简化模型文件如下,
class Model(application : Application) : AndroidViewModel(application)
{
val keys : LiveData<List<Key>>
val keyset : LiveData<MutableList<Key>>
val values : LiveData<List<Value>>
init {
keys = repository.keys
values = repository.values
keyset = mutableListOf<Key>() // I'm not entirely sure how to instantiate LiveData<MutableList<Key>>
}
}
它依赖于存储库,
class Repository(private val queryset : QuerySet)
{
val keys : LiveData<List<Key>> = queryset.getKeys()
val values : LiveData<List<Value>> = queryset.getValues()
}
依赖于查询集
@Dao
class QuerySet(application : Application) : AndroidViewModel(application)
{
@Query("SELECT * FROM KeyEntity")
fun getKeys() : LiveData<list<Key>>
@Query("SELECT * FROM ValueEntity WHERE key in (:keys)")
fun getValues(keys : MutableList<Key>) : LiveData<list<Value>>
}
Key
和Value
类只是简单的 POJO和KeyEntity
简单ValueEntity
地指定相同的字段。
我应该使用MutableLiveData
还是LiveData
为此目的?如果是这样应该如何实施keyset
?也许这样做有更规范的方式?