Estoy tratando de verificar si la primera solicitud vino con el objeto vacío, para mostrar un diseño que indica que no tiene ningún elemento.
Mi solución fue crear una excepción propia. Me gustaría saber si hay otra manera mejor. Porque busqué en la documentación y no encontré nada.
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, Item> { return try { val position = params.key ?: FIRST_PAGE_INDEX val response = api.getItem(position, params.loadSize, searchKey) val nextKey = response?.next val itemList = response?.itemList ?: emptyList() if (itemList.isNotEmpty()) { LoadResult.Page( data = itemList, prevKey = null, nextKey = if (nextKey == LAST_PAGE_INDEX) null else nextKey ) } else { LoadResult.Error(EmptyListException()) } } catch (exception: IOException) { LoadResult.Error(exception) } catch (exception: HttpException) { LoadResult.Error(exception) } }Para mostrar EmptyView, puede mirar loadState.append , que representa el estado de carga para cargar datos al final de la lista y puede confirmar si no hay más datos para cargar usando endOfPaginationReached y luego puede verificar itemCout de PagingDataAdapter . ` .
eg: adapter.addLoadStateListener { loadState -> if ( loadState.append.endOfPaginationReached ) { if ( adapter.itemCount < 1) /// show empty view else /// hide empty view } }