Класс Item.kt равен
@Entity(tableName = "item")
class Item(
val id: Long,
val title: String,
) {
@Ignore
var selection: Boolean = false
}
Затем я делаю запрос, чтобы получить все элементы в таблице, он возвращает
LiveData<List<Item>>
Затем в viewModel я хочу применить selection (true) в соответствии с Mutablelivedata selectionId , идентификатор выбора содержит MutableLiveData<Long>
(он содержит идентификатор в LiveData<List<Item>>
)
Код MyViewModel.kt выглядит следующим образом
class MyViewModel(val repository: Repository) : ViewModel() {
..........
......
val selectionId: MutableLiveData<Long> by lazy {
MutableLiveData<Long>()
}
fun setSelectionId(id: Long) {
selectionId.postValue(id)
}
..........
......
val itemLiveList: LiveData<List<Item>> = liveData(Dispatchers.IO) {
emitSource(repository.getItems())
}
}
Если это List<Item>
, я могу сделать что-то подобное
val ItemWithSelection: List<Item> = repository.getItems().apply {
this.forEach {
if (it.id == selectionId) {
it.selection = true
}
}
}
но я не знаю, как этого добиться, используя Mediator LiveData. Пожалуйста, помогите мне