Обновление UI с помощью LiveData (обновление ссылки)
Есть фрагмент с RecyclerView. При нажатии на кнопку удаления элемента (в элементе списка) или при добавлении элемента, нужно автоматически обновить список (перезаписать). Опытным путём определил, что LiveData основывается на ссылках, а не значениях. И обновление произойдёт только после создания новой ссылки. На сколько корректно использовать такое решение для аналогичных задач и есть ли более лаконичное решение?
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel.listOfPhotoUri.observe(viewLifecycleOwner) {
photoAdapter.updateData(it.toList())
}
}
// ViewModel
fun addUri(uri: Uri) {
_listOfPhotoUri.value?.add(uri)
rewriteLiveData()
}
fun removeUri(uri: Uri) {
_listOfPhotoUri.value?.remove(uri)
rewriteLiveData()
}
private fun rewriteLiveData(): MutableSet<Uri> {
val newValue = _listOfPhotoUri.value
_listOfPhotoUri.value?.let {
_listOfPhotoUri.value = it
}
return newValue ?: mutableSetOf()
}