Android Paging3 未收到错误状态

问题描述 投票:0回答:1

我正在使用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
。我正确地得到了其余的状态。

为什么会发生这种情况?请帮助我

android kotlin android-recyclerview android-paging-3 android-diffutils
1个回答
1
投票

我可能来不及回答,但由于我遇到了同样的问题,我会将我的经验留给其他可能遇到同样情况的人。

当我尝试使用像

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
,错误也从那里触发。

希望我的回答对其他人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.