事件处理程序
pagingFLow.apply {
when {
loadState.refresh is LoadState.Loading -> {}
loadState.refresh is LoadState.NotLoading -> {}
loadState.append is LoadState.Loading -> {
item { CircularProgressIndicator() }
}
loadState.refresh is LoadState.Error -> {
val e = pagingFLow.loadState.append as LoadState.Error
Log.i("ERROR", e.toString())
}
loadState.append is LoadState.Error -> {
val e = pagingFLow.loadState.append as LoadState.Error
Log.i("ERROR", e.toString())
}
}
}在这里,val e = pagingFLow.loadState.append as LoadState.Error抛出androidx.paging.LoadState$NotLoading cannot be cast to androidx.paging.LoadState$Error
这在没有DB的DataSource中运行得很好,但是当您添加RemoteMediator时,它会抛出这个错误。
发布于 2022-03-01 00:41:01
正如菲利普·德胡科夫所暗示的那样,你的演员阵容并不一定一定会成功。
loadState.append可以是以下内容中的任何内容:
pagingFLow.apply {
when {
...
loadState.refresh is LoadState.Error -> {
val e = pagingFLow.loadState.append as LoadState.Error
Log.i("ERROR", e.toString())
}
...
}
}你的意思可能是:
pagingFLow.apply {
when {
...
loadState.append is LoadState.Error -> {
Log.i("ERROR", loadState.append.toString())
}
...
}
}注意:您不需要显式转换后类型检查,因为聪明的铸造,所以你可以完全省略转换。
而且,通常情况下,访问成员并假定在竞争条件下值不会更改是不安全的,因此在并发调用的情况下,您应该使用loadState.member而不是pagingFLow.loadState.member。虽然这可能对您的情况是好的,但也将防止科特林智能铸造后,类型检查。
https://stackoverflow.com/questions/71060034
复制相似问题