我正在使用paging3。我的
RemoteMediator
从 catch 返回 Result.Error:
catch (e: Exception) {
return MediatorResult.Error(handler.getError(e))
}
在片段内部我正在监听状态变化:
adapter.addLoadStateListener { loadState ->
// here some code
}
问题是,尽管 RemoteMediator 返回了
LoadState.Error
,但我没有得到 MediatorResult.Error
。我得到的是 LoadState.Error
,而不是 LoadState.NotLoading
。我正确地得到了其余的状态。
为什么会发生这种情况?请帮助我
我可能来不及回答,但由于我遇到了同样的问题,我会将我的经验留给其他可能遇到同样情况的人。
当我尝试使用像
if(loadState.refresh is LoadState.Error)
这样的代码来获取错误时,我无法获取错误。所以像下面的代码一样,我修改了我的代码。
loadStateListener = { loadState ->
when {
loadState.prepend is LoadState.Error -> {
loadState.prepend as LoadState.Error
}
loadState.append is LoadState.Error -> {
loadState.append as LoadState.Error
}
loadState.refresh is LoadState.Error -> {
loadState.refresh as LoadState.Error
}
else -> {
null
}
}
尝试检查所有负载状态类型。就我而言,当滚动中间发生网络异常时,
loadState type
是append
,错误也从那里触发。
希望我的回答对其他人有帮助。