如何解决如何使用Paging 3库在回收者视图中显示数据
我正在使用Paging 3库,并且正在从数据源的load
方法内部的网络中获取正确的数据。
但是以某种方式,数据不会发送回活动和回收站视图,而我得到的只是空的回收站视图。
我的代码在做什么错?
数据源
override suspend fun load(params: LoadParams<Int>): LoadResult<Int,Movie> {
val position = params.key ?: MOVIES_STARTING_PAGE_INDEX
val response =
movieService.apiService.getAllMovies(Constants.API_KEY,position)
val movies = response.movies
return LoadResult.Page(
//Todo: !!!!! REMOVE THE "!!" MARK AND SET IT TO EMPTY LIST IN THE MODEL
data = movies!!,prevKey = if (position == MOVIES_STARTING_PAGE_INDEX) null else position - 1,nextKey = if (movies.isEmpty()) null else position + 1
)
}
存储库
fun getMoviesResultsstream(): Flow<PagingData<Movie>> {
return Pager(
config = PagingConfig(
pageSize = NETWORK_PAGE_SIZE
),pagingSourceFactory = { MoviePagingSource(movieService) }
).flow
}
查看模型
fun searchMovies(): Flow<PagingData<Movie>> {
return repo.getMoviesResultsstream()
.cachedIn(viewmodelScope)
}
活动
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
viewmodel = viewmodelProvider(this,Injection.provideviewmodelFactory())
.get(Dummyviewmodel::class.java)
movies_recycler_view?.apply {
context?.let {
layoutManager = linearlayoutmanager(it)
movieAdapter = DummyAdapter()
adapter = movieAdapter
}
}
lifecycleScope.launch {
viewmodel.searchMovies().collectLatest {
movieAdapter.submitData(it)
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。