У меня есть конечная точка API, которая возвращает список объектов. Я использую Paging 3 с pagingSource, потоком в ViewModel и CollectAsLazyPagingItems. Этот список передается в LazyColumn для отображения элементов на экране.
В LazyColumn элементы выглядят следующим образом
Код: Выделить всё
items(
count = list.itemCount,
key = list.itemKey { it.uuid },
contentType = list.itemContentType { it }
) { // composable here }
Например, я извлекаю 50 элементов на первой странице (и последний элемент в списке имеет uuid: «xxx»). Прокрутите вниз, и новые 50 элементов содержат этот элемент xxx, потому что порядок был изменен на сервере, пока я прокручивал. И теперь я получаю следующую ошибку:
Код: Выделить всё
IllegalArgumentException: Key was already used
Я не хочу удалять уникальные ключи из LazyColumn, поскольку это повышает производительность. Есть ли другие способы справиться с этим случаем? Что я могу сделать, чтобы предотвратить эту ошибку при использовании Paging 3?
Подробнее здесь:
https://stackoverflow.com/questions/772 ... agingitems