Я использую LiveData и ViewModel из компонентов архитектуры в моем приложении.
У меня есть список элементов, разбитых на страницы, я загружаю больше, когда пользователь прокручивает страницу вниз. Результат запроса сохраняется в
MutableLiveData<List<SearchResult>>
Когда я выполняю начальную загрузку и устанавливаю переменную в новый список, он запускает обратный вызов адаптера привязки, который загружает данные в recyclerview.
Однако, когда я загружаю вторую страницу и добавляю в список дополнительные элементы, обратный вызов не запускается. Однако, если я заменяю список новым списком, содержащим как старые, так и новые элементы, срабатывает обратный вызов.
Возможно ли, чтобы LiveData уведомляла своих наблюдателей об обновлении списка поддержки, а не только при обновлении объекта LiveData?
Это не работает (игнорируя нулевые проверки):
val results = MutableLiveData<MutableList<SearchResult>>()
/* later */
results.value.addAll(newResults)
Это работает:
val results = MutableLiveData<MutableList<SearchResult>>()
/* later */
val list = mutableListOf<SearchResult>()
list.addAll(results.value)
list.addAll(newResults)
results.value = list