Каков рекомендуемый способ упаковки MutableList
в LiveData
или MutableLiveData
, чтобы можно было изменить список и наблюдать за изменениями, которые он претерпевает?
У меня есть довольно короткие таблицы (<20 элементов) в комнате (кэширует значения, полученные с сервера).Я хотел бы сохранить изменяемое подмножество этих элементов;для использования в качестве фильтров в запросах к другим, более крупным таблицам.Я думал о том, чтобы назначить <code>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
?Возможно, есть более канонический способ сделать это?