微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Paging 3库在回收者视图中显示数据

如何解决如何使用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 举报,一经查实,本站将立刻删除。