- 我确实有一个分页数据源,它
PagedData<T>
在从 SQLite 初始加载后返回与 pagedAdapter 一起显示的数据。在一些服务器事务之后,我收到一个列表,List<T>
在转换和缓存之后需要显示它。 - 我知道使用 Room db 会很容易,但现在已经不在讨论范围内了。如何更新初始分页列表并创建一个新的 pagedList,然后将其推送到适配器。
- 尝试在新服务器列表上使用映射转换为 PagingDataObject 但据我所知这是不可能的。
list.map { item -> {PagingData<item>}
问问题
124 次
1 回答
0
如果您希望可以实现自己的 pagingSource,则不必使用 Room。paging3 codelab的前半部分向您展示了如何实现这一目标。像这样创建寻呼机:
Pager(
config = PagingConfig(
pageSize = 10,
enablePlaceholders = false
),
pagingSourceFactory = { MyPaginSource() }
).flow
并MyPaginSource
像这样实现:
class MyPaginSource() : PagingSource<Int, MyItem>() {
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, MyItem> {
if(params.key == null){
//load initial list from where ever you want, and create your own key
//to load next page of data
val firstPage = //todo
val nextKey = //todo
return LoadResult.Page(
data = firstPage ,
prevKey = null,
nextKey = nextKey
)
} else{
//load the other pages based on your key, for example from server
val newPage = //todo
val nextKey = //todo if you need to continue loading
return LoadResult.Page(
data = newPage ,
prevKey = null,
nextKey = nextKey
)
}
}
}
于 2021-04-29T13:30:21.430 回答