Oli*_*mon 8 android kotlin android-paging
我试图检查第一个请求是否带有空对象,以显示一个布局,表明它没有项目。
我的解决方案是创建一个我自己的例外。我想知道是否有另一种更好的方法。因为我查看了文档并没有发现任何内容。
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)
}
}
Run Code Online (Sandbox Code Playgroud)
Sar*_*han 15
为了显示EmptyView你可以看看loadState.append它代表了列表的末尾加载数据的负载状态,从而可以确认是否有使用没有更多的数据负载endOfPaginationReached之后,可以检查itemCout的PagingDataAdapter。` .
eg: adapter.addLoadStateListener { loadState ->
if ( loadState.append.endOfPaginationReached )
{
if ( adapter.itemCount < 1)
/// show empty view
else
/// hide empty view
}
}
Run Code Online (Sandbox Code Playgroud)